
しばらく検索しましたが、問題の解決策が見つかりません。間接関数を介してドロップダウン リストで使用される値のリストを含む tbl_lov というテーブルがあります。INDIRECT("tbl_lov[ProjNR]")
プロジェクトが次々と発生するため、tbl_lov に Active という列があり、この列には True または False の値が格納されます。False の場合、この値がドロップダウンに表示されないようにする必要があります。残念ながら、これを直接行う方法をまだ見つけていません。
答え1
関数だけを使用するのは簡単なことではないようなので、結局マクロを使用することにしました (これは避けたかったことです)。
Dim all_lov As Variant
Dim row_nr As Integer
Sub Button1_Click()
Worksheets("LoV").Range("I:N").Delete
row_nr = 3
all_lov = Worksheets("LoV").ListObjects("tbl_lov").DataBodyRange.Value
Worksheets("LoV").Range("B3:G3").Copy Worksheets("LoV").Range("I3")
For i = 1 To UBound(all_lov)
If all_lov(i, 6) = True Then
row_nr = row_nr + 1
Worksheets("LoV").Range("B" & (3 + i) & ":G" & (3 + i)).Copy Worksheets("LoV").Range("I" & row_nr)
End If
Next i
Worksheets("Lov").ListObjects.Add(SourceType:=xlSrcRange, Source:=Worksheets("LoV").Range("I3:N" & row_nr), xlListObjectHasHeaders:=xlYes, tablestyleName:="TableStyleDark3").Name = "tbl_lovActive"
End Sub
これは既存のテーブルを反復処理し、アクティブなプロジェクトのみを新しい範囲にコピーします。データ検証は新しいテーブルを指します。