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.