tenemos una lista que asocia nombres con valores
donde los nombres se repiten.
Queremos crear una lista desplegable que muestre los valores asociados al nombre que eliljamos en la celda G2 de este ejemplo
Vamos a mostrar como está construido este modelo.
Comenzamos por mostrar la columna A que están oculta. Esta columna contiene un rango dinámico donde ponemos los valores asociados al nombre que aparece en la celda G2.
El rango D1:E14 que contiene los nombres y sus valores está definido como Tabla.
La columna A contiene los valores asociados al nombre introducido en la celda G2.
Para poner estos valores usamos un evento de tipo Change
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$2" Then
Range("tblNombreValor[#All]").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("G1:G2"), CopyToRange:=Range("A1"), Unique:=False
End If
End Sub
El código usa la funcionalidad Filtro Avanzado (Datos - Ordenar y Filtrar - Avanzadas) que nos permite filtrar una tabla y copiar los resultados a otro rango.
Definimos un nombre que se refiere a este rango dinámicamente con esta fórmula
=Hoja1!$A$2:INDICE(Hoja1!$A:$A,CONTARA(Hoja1!$A:$A))
Ahora definimos una validación de datos en la celda H2 con la opción Lista y el nombre definido ListValores en la casilla Origen
Con esto concluimos la construcción del modelo. El archivo del ejemplo se puede descargar aquí.
En cuanto al formato condicional para señalar las filas del nombre introducido en G2, usamos la opción Formula con esta definición