Fórmula do Excel: FILTRO para remover colunas -

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.

Artigos interessantes...