
Fórmula genérica
=FILTER(data,(header="a")+(header="b"))
Resumen
Para filtrar columnas, proporcione una matriz horizontal para el argumento de inclusión. En el ejemplo que se muestra, la fórmula en I5 es:
=FILTER(B5:G12,(B4:G4="a")+(B4:G4="c")+(B4:G4="e"))
El resultado es un conjunto de datos filtrado que contiene solo las columnas A, C y E de los datos de origen.
Explicación
Aunque FILTER se usa más comúnmente para filtrar filas, también puede filtrar columnas, el truco consiste en proporcionar una matriz con el mismo número de columnas que los datos de origen. En este ejemplo, construimos la matriz que necesitamos con lógica booleana, también llamada álgebra booleana.
En álgebra de Boole, la multiplicación corresponde a la lógica Y, y la suma corresponde a la lógica OR. En el ejemplo que se muestra, estamos usando álgebra booleana con lógica OR (suma) para apuntar solo a las columnas A, C y E de esta manera:
(B4:G4="a")+(B4:G4="c")+(B4:G4="e")
Después de evaluar cada expresión, tenemos tres matrices de valores VERDADERO / FALSO:
(TRUE,FALSE,FALSE,FALSE,FALSE,FALSE)+ (FALSE,FALSE,TRUE,FALSE,FALSE,FALSE)+ (FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)
La operación matemática (suma) convierte los valores VERDADERO y FALSO en 1 y 0, por lo que puede pensar en la operación de esta manera:
(1,0,0,0,0,0)+ (0,0,1,0,0,0)+ (0,0,0,0,1,0)
Al final, tenemos una única matriz horizontal de 1 y 0:
(1,0,1,0,1,0)
que se entrega directamente a la función FILTRO como argumento de inclusión:
=FILTER(B5:G12,(1,0,1,0,1,0))
Observe que hay 6 columnas en los datos de origen y 6 valores en la matriz, todos 1 o 0. FILTER usa esta matriz como filtro para incluir solo las columnas 1, 3 y 5 de los datos de origen. Se eliminan las columnas 2, 4 y 6. En otras palabras, las únicas columnas que sobreviven están asociadas con unos.
Con la función MATCH
La aplicación de la lógica OR con la suma como se muestra arriba funciona bien, pero no se escala bien y hace que sea imposible usar un rango de valores de una hoja de trabajo como criterio. Como alternativa, puede usar la función COINCIDIR junto con la función ESNÚMERO de esta manera para construir el argumento de inclusión de manera más eficiente:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,("a","c","e"),0)))
La función COINCIDIR está configurada para buscar todos los encabezados de columna en la constante de matriz ("a", "c", "e") como se muestra. Lo hacemos de esta manera para que el resultado de MATCH tenga dimensiones compatibles con los datos de origen, que contienen 6 columnas. Observe también que el tercer argumento en MATCH se establece en cero para forzar una coincidencia exacta.
Después de que se ejecuta MATCH, devuelve una matriz como esta:
(1,#N/A,2,#N/A,3,#N/A)
Esta matriz va directamente a ISNUMBER, que devuelve otra matriz:
(TRUE,FALSE,TRUE,FALSE,TRUE,FALSE)
Como arriba, esta matriz es horizontal y contiene 6 valores separados por comas. FILTER usa la matriz para eliminar las columnas 2, 4 y 6.
Con una gama
Dado que los encabezados de las columnas ya están en la hoja de trabajo en el rango I4: K4, la fórmula anterior se puede adaptar fácilmente para usar el rango directamente así:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,I4:K4,0)))
El rango I4: K4 se evalúa como ("a", "c", "e") y se comporta como la constante de matriz en la fórmula anterior.