
Я искал некоторое время, но не смог найти решение моей проблемы. Есть таблица с именем 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
Это будет итерировано через мою существующую таблицу и скопирует в новый диапазон только активные проекты. Проверка данных указывает на новую таблицу.