
Fórmula genérica
=FILTER(data,(header="a")+(header="b"))
Resumo
Para filtrar colunas, forneça uma matriz horizontal para o argumento de inclusão. No exemplo mostrado, a fórmula em I5 é:
=FILTER(B5:G12,(B4:G4="a")+(B4:G4="c")+(B4:G4="e"))
O resultado é um conjunto filtrado de dados que contém apenas as colunas A, C e E dos dados de origem.
Explicação
Embora FILTER seja mais comumente usado para filtrar linhas, você também pode filtrar colunas, o truque é fornecer uma matriz com o mesmo número de colunas que os dados de origem. Neste exemplo, construímos o array de que precisamos com lógica booleana, também chamada de álgebra booleana.
Na álgebra booleana, a multiplicação corresponde à lógica AND e a adição corresponde à lógica OR. No exemplo mostrado, estamos usando álgebra booleana com lógica OR (adição) para direcionar apenas as colunas A, C e E desta forma:
(B4:G4="a")+(B4:G4="c")+(B4:G4="e")
Depois que cada expressão é avaliada, temos três matrizes de valores TRUE / FALSE:
(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 TRUE e FALSE em 1s e 0s, então você pode pensar na operação assim:
(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 diretamente à função FILTER como o argumento de inclusão:
=FILTER(B5:G12,(1,0,1,0,1,0))
Observe que há 6 colunas nos dados de origem e 6 valores na matriz, todos 1 ou 0. FILTER usa essa matriz como um filtro para incluir apenas as colunas 1, 3 e 5 dos dados de origem. As colunas 2, 4 e 6 são removidas. Em outras palavras, as únicas colunas que sobreviveram estão associadas a 1s.
Com a função MATCH
Aplicar a lógica OR com adição, conforme mostrado acima, funciona bem, mas não é bem dimensionado e torna impossível usar uma faixa de valores de uma planilha como critério. Como alternativa, você pode usar a função MATCH junto com a função ISNUMBER para construir o argumento include de maneira mais eficiente:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,("a","c","e"),0)))
A função MATCH é configurada para procurar todos os cabeçalhos de coluna na constante da matriz ("a", "c", "e") conforme mostrado. Fazemos isso desta forma para que o resultado do MATCH tenha dimensões compatíveis com os dados de origem, que contém 6 colunas. Observe também que o terceiro argumento em MATCH é definido como zero para forçar uma correspondência exata.
Depois que MATCH é executado, ele retorna uma matriz como esta:
(1,#N/A,2,#N/A,3,#N/A)
Esta matriz vai diretamente para ISNUMBER, que retorna outra matriz:
(TRUE,FALSE,TRUE,FALSE,TRUE,FALSE)
Como acima, esta matriz é horizontal e contém 6 valores separados por vírgulas. FILTER usa a matriz para remover as colunas 2, 4 e 6.
Com um alcance
Uma vez que os cabeçalhos das colunas já estão na planilha no intervalo I4: K4, a fórmula acima pode ser facilmente adaptada para usar o intervalo diretamente desta forma:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,I4:K4,0)))
O intervalo I4: K4 é avaliado como ("a", "c", "e") e se comporta como a constante de matriz na fórmula acima.