Aunque FILTRO se utiliza más comúnmente para filtrar filas, también se pueden filtrar columnas, el truco es suministrar un array con el mismo número de columnas que los datos de origen. En este ejemplo, construimos el array que necesitamos con lógica booleana, también llamada álgebra booleana.

En el álgebra booleana, la multiplicación corresponde a la lógica AND, y la suma a la lógica OR. En el ejemplo mostrado, estamos utilizando el álgebra booleana con la lógica OR (adición) para apuntar sólo a las columnas A, C y E así:

(B4:G4="a")+(B4:G4="c")+(B4:G4="e")

Después de evaluar cada expresión, tenemos tres matrices de valores TRUE/FALSE:

{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 TRUE y FALSE en 1s y 0s, por lo que puedes pensar en la operación así:

{1,0,0,0,0,0}+{0,0,1,0,0,0}+{0,0,0,0,1,0}

Al final, tenemos un único array horizontal de 1s y 0s:

{1,0,1,0,1,0}

que se entrega directamente a la función FILTER como argumento de inclusión:

=FILTER(B5:G12,{1,0,1,0,1,0})

Nota que hay 6 columnas en los datos de origen y 6 valores en el array, todos 1 o 0. FILTER utiliza esta matriz como un filtro para incluir sólo las columnas 1, 3 y 5 de los datos de origen. Las columnas 2, 4 y 6 se eliminan. En otras palabras, las únicas columnas que sobreviven están asociadas a 1s.

Con la función MATCH

Aplicar la lógica OR con la adición como se muestra arriba funciona bien, pero no escala bien, y hace imposible usar un rango de valores de una hoja de trabajo como criterio. Como alternativa, puede utilizar la función MATCH junto con la función ISNUMBER de esta manera para construir el argumento de inclusión de forma más eficiente:

=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,{"a","c","e"},0)))

La función MATCH está configurada para buscar todas las cabeceras de columna en la constante del array {"a", "c", "e"} como se muestra. Lo hacemos así para que el resultado de MATCH tenga dimensiones compatibles con los datos de origen, que contienen 6 columnas. Observa también que el tercer argumento de MATCH se pone a cero para forzar una coincidencia exacta.

Después de que MATCH se ejecute, devuelve un array como este:

{1,#N/A,2,#N/A,3,#N/A}

Este array va directamente a ISNUMBER, que devuelve otro array:

{TRUE,FALSE,TRUE,FALSE,TRUE,FALSE}

Como arriba, este array es horizontal y contiene 6 valores separados por comas. FILTER utiliza el array para eliminar las columnas 2, 4 y 6.

Con un rango

Dado que las cabeceras 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 utilizar 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 igual que la constante del array en la fórmula anterior.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *