FILTER é mais comumente usado para filtrar linhas, também é possível filtrar colunas, o truque é fornecer uma matriz com o mesmo número de colunas que os dados da fonte. Neste exemplo, construímos o array de que precisamos com lógica booleana, também chamada álgebra booleana.

Na álgebra booleana, a multiplicação corresponde à lógica AND, e a adição corresponde à lógica OR. No exemplo mostrado, estamos a usar álgebra booleana com lógica OR (adição) para visar apenas as colunas A, C, e E assim:

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

Após cada expressão ser avaliada, temos três arrays de valores VERDADEIRO/FALSO:

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

A operação matemática (adição) converte os valores VERDADEIRO e FALSO em 1s e 0s, para que se possa pensar na operação desta forma:

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

No final, temos uma única matriz horizontal de 1s e 0s:

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

que é entregue directamente à função FILTRO como argumento de inclusão:

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

Notificação de que existem 6 colunas nos dados de origem e 6 valores na matriz, todos 1 ou 0. O FILTER utiliza este array como filtro para incluir apenas as colunas 1, 3, e 5 dos dados da fonte. As colunas 2, 4, e 6 são removidas. Por outras palavras, as únicas colunas que sobrevivem estão associadas a 1s.

Com a função MATCH

Aplicar a lógica OR com adição, como mostrado acima, funciona bem, mas não é bem dimensionada, e torna impossível a utilização de uma gama de valores de uma folha de trabalho como critério. Como alternativa, pode-se usar a função MATCH juntamente com a função ISNUMBER como esta para construir o argumento include de forma mais eficiente:

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

A função MATCH está configurada para procurar todos os cabeçalhos de coluna na constante do array {“a”, “c”, “e”} como mostrado acima. Fazemo-lo desta forma para que o resultado de MATCH tenha dimensões compatíveis com os dados da fonte, que contém 6 colunas. Note-se também que o terceiro argumento em MATCH é definido como zero para forçar uma correspondência exacta.

Após a execução de MATCH, retorna um array como este:

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

Este array vai directamente para ISNUMBER, que retorna outro array:

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

As acima, este array é horizontal e contém 6 valores separados por vírgulas. FILTER utiliza o array para remover as colunas 2, 4, e 6.

Com um intervalo

Desde que os cabeçalhos das colunas já estejam na folha de trabalho no intervalo I4:K4, a fórmula acima pode ser facilmente adaptada para utilizar o intervalo directamente desta forma:

=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,I4:K4,0)))

A gama I4:K4 é avaliada como {“a”, “c”, “e”}, e comporta-se exactamente como a constante da matriz na fórmula acima.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *