
He buscado por un tiempo sin poder encontrar una solución a mi problema. Tiene una tabla llamada tbl_lov que contiene la lista de valores utilizados en una lista desplegable mediante una función indirecta. INDIRECTO("tbl_lov[ProjNR]")
A medida que los proyectos van y vienen, tengo una columna en tbl_lov llamada activa que tiene un valor de Verdadero o Falso. Si es falso, no quiero que este valor se muestre en el menú desplegable. Desafortunadamente, todavía no he descubierto cómo puedo hacer esto directamente.
Respuesta1
Como parece que no es nada trivial usar solo sus funciones, lo que terminé haciendo fue usar una Macro (que quería evitar).
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
Esto se repetirá a través de mi tabla existente y se copiarán en un nuevo rango solo los proyectos activos. La validación de datos apunta a la nueva tabla.