Estoy usando Excel 2016 en Windows 8.1.
Quiero poder hacer coincidir dos criterios, donde un criterio es el encabezado de una columna y el otro es el contenido de la celda que puede aparecer cualquier cantidad de veces dentro de esa columna, y devolver varios encabezados de fila como resultados.
En mi ejemplo, quiero poder ingresar el nombre de una fruta (los encabezados de las columnas) y una calidad ('buena' o 'mala') en las celdas B6 y B7, y recibir las características (encabezados de las filas) que coincidan con esa fruta. y calidad. Si le doy "manzanas" y "bueno", quiero que devuelva "apariencia" y "sabor" (y no "precio"), por ejemplo.
He usado Index Match antes y he oído hablar del uso de fórmulas de matriz para trabajar con rangos de celdas. Pero no puedo entender cómo combinar todo esto, especialmente porque todos los tutoriales que he encontrado tratan sobre cómo comparar un encabezado de fila y un encabezado de columna, y encontrar las celdas resultantes. Además, no quiero "codificar" una referencia a un encabezado de columna determinado porque es posible que no siempre quiera hacer coincidir "Manzanas".
Probé una tabla dinámica y no fue muy elegante (mis datos reales tienen 5 elementos de "calidad", no solo 2).
Captura de pantalla de una tabla de ejemplo
A B C D E F
1 | Apples | Bananas | Lemons | Mangos | Oranges
-----------------------------------------------------------
2 Appearance | good | good | bad | bad | good
----------------------------------------------------------
3 Flavour | good | good | bad | good | good
----------------------------------------------------------
4 Price | bad | good | good | bad | good
----------------------------------------------------------
5 | | | | |
----------------------------------------------------------
6 Fruit: | apples | | | |
----------------------------------------------------------
7 Quality: | good | | | |
----------------------------------------------------------
8 | | | | |
----------------------------------------------------------
9 Results: | | | | |
----------------------------------------------------------
Respuesta1
Esta es una variación de lo que propuso @Scott Craner, pero puede funcionar para usted.
Agregué marcadores de posición para cualidades adicionales. Coloque esta fórmula en B11 y luego arrastre hacia abajo varias filas para igualar la cantidad de cualidades que tiene.
=IF(INDEX($B2:$F2,,MATCH($B$8,$B$1:$F$1))=$B$9,$A2,"")
Si no le gusta el aspecto de Resultados1 y realmente desea que los valores estén en una celda, coloque esta fórmula en B18 y oculte las filas 11 a 15.
=IF(B11="","",B11&"//") & IF(B12="","",B12&"//") & IF(B13="","",B13&"//") & IF(B14="","",B14&"//") & IF(B15="","",B15&"//")
Sustituye lo que quieras como separador por "//".
Respuesta2
Esto recorrerá las celdas y devolverá todos los números de fila que coincidan con el ÍNDICE, que luego devolverá el valor.
Pon esto en B9:
=IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$2:$A$4)/(($B$2:$F$4=$B$7)*($B$1:$F$1=$B$6)),COLUMN(A:A))),"")
Y copie lo suficiente para tener en cuenta todas las características.