0

はるかに大きなリストから引き出された値のリストを表示するデータ検証ドロップダウンセルを作成しようとしていますが、ルックアップ値が特定の要件を満たすもののみです。これは、ルックアップ値が特定の要件を満たす値のみを追加する SUMIF 関数のようなものです。これが私のリストの例です:

                V   F
Apples              x
Bananas             x
Tangerines          x
Tomatoes        x   x
Broccoli        x   
Pears               x
Kiwis               x
Plums               x
Water melon         x
Squash          x   x

最初の列に「x」が付いているものだけをドロップダウンに表示したい。

Tomatoes
Broccoli
Squash

また、元のリストはソートできません。それがうまくいくなら、私はマクロを使用しても問題ありません。エクセル2010を使用しています。

4

3 に答える 3

1

If you want a range of valid entries without blanks to use as a list for data validation, I suggest something like:

=INDEX($A$2:$A$11,SMALL(IF($B$2:$B$11<>"",ROW($A$2:$A$11)-ROW($A$2)+1),ROWS(C$2:C2)))  

entered with Ctrl+Shift+Enter

There is about 20 minutes of explanation at https://www.youtube.com/watch?v=6PcF04bTSOM.

SO19100440 example

于 2013-09-30T18:05:40.293 に答える
0

VBA を使用しないと、フィルター処理されたリストのコピーを作成できます。その後、データ検証を使用するときに、そのコピー内のセルを参照できます。

たとえば、上記の例に対して次の手順を実行できます
。 最初の列に x が表示されているものだけが表示されるリストにフィルターを適用します。フィルター処理されたリストをコピーして、ワークシートの別の場所に貼り付けます。リストのフィルターをオフにすると、通常に戻ります。検証ドロップダウンを追加するセルに移動し、データ検証を選択します。リストを選択し、コピーしたリストを参照します。

于 2013-09-30T17:55:29.573 に答える
0

VBA を使用すると、これをスターターとして使用できます。鍵となるのは方法であり、ここRange.Validationで詳しく説明されています。これにより、列 A のリストが読み取られ、列 B に「x」があるリストが検索され、それがセルE1の検証リストに入れられます。

Dim myvalidation_list As String
Dim last_row As Long, current_row As Long

last_row = Cells(Rows.Count, "A").End(xlUp).Row

For current_row = 1 To last_row
  If LCase(ActiveSheet.Cells(current_row, 2).Value) = "x" Then
    'put in the delimiting "," if the list already has an entry
    If myvalidation_list <> "" Then
      myvalidation_list = myvalidation_list & ","
    End If
    'add to the validation list
    myvalidation_list = myvalidation_list _
    & ActiveSheet.Cells(current_row, 1).Value
  End If
Next

With ActiveSheet.Range("E1").Validation
  .Delete
  .Add Type:=xlValidateList, Formula1:=myvalidation_list
End With
于 2013-09-30T19:09:51.033 に答える