Fórmula do Excel: FILTRO com vários critérios OU -

Índice

Resumo

Para extrair dados com várias condições OR, você pode usar a função FILTER junto com a função MATCH. No exemplo mostrado, a fórmula em F9 é:

=FILTER(B5:D16, ISNUMBER(MATCH(items,F5:F6,0))* ISNUMBER(MATCH(colors,G5:G6,0))* ISNUMBER(MATCH(cities,H5:H6,0)))

onde itens (B3: B16), cores (C3: C16) e cidades (D3: D16) são intervalos nomeados.

Esta fórmula retorna dados onde o item é (camisetas OU moletom) E a cor é (vermelho OU azul) E a cidade é (denver OU Seattle).

Explicação

Neste exemplo, os critérios são inseridos no intervalo F5: H6. A lógica da fórmula é:

o item é (camiseta OU moletom) E a cor é (vermelho OU azul) E a cidade é (denver OU Seattle)

A lógica de filtragem desta fórmula (o argumento de inclusão) é aplicada com as funções ISNUMBER e MATCH, junto com a lógica booleana aplicada em uma operação de matriz.

MATCH é configurado "para trás", com valores de pesquisa provenientes dos dados e critérios usados ​​para a matriz de pesquisa. Por exemplo, a primeira condição é que os itens sejam camisetas ou moletons. Para aplicar esta condição, MATCH é configurado assim:

MATCH(items,F5:F6,0) // check for tshirt or hoodie

Como existem 12 valores nos dados, o resultado é uma matriz com 12 valores como este:

(1;#N/A;#N/A;2;#N/A;2;2;#N/A;1;#N/A;2;1)

Esta matriz contém erros # N / A (sem correspondência) ou números (correspondência). Os números dos avisos correspondem aos itens que são camisetas ou moletons. Para converter esta matriz em valores TRUE e FALSE, a função MATCH é agrupada na função ISNUMBER:

ISNUMBER(MATCH(items,F5:F6,0))

que produz uma matriz como esta:

(TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE)

Nesta matriz, os valores TRUE correspondem a camiseta ou moletom.

A fórmula completa contém três expressões como a acima, usadas para incluir o argumento da função FILTER:

ISNUMBER(MATCH(items,F5:F6,0))* // tshirt or hoodie ISNUMBER(MATCH(colors,G5:G6,0))* // red or blue ISNUMBER(MATCH(cities,H5:H6,0))) // denver or seattle

Depois que MATCH e ISNUMBER são avaliados, temos três matrizes contendo valores TRUE e FALSE. A operação matemática de multiplicar esses arrays juntos força os valores VERDADEIRO e FALSO para 1s e 0s, portanto, podemos visualizar os arrays neste ponto assim:

(1;0;0;1;0;1;1;0;1;0;1;1)* (1;0;1;1;0;1;0;0;0;0;0;1)* (1;0;1;0;0;1;0;1;1;0;0;1)

O resultado, seguindo as regras da aritmética booleana, é uma única matriz:

(1;0;0;0;0;1;0;0;0;0;0;1)

que se torna o argumento de inclusão na função FILTER:

=FILTER(B5:D16,(1;0;0;0;0;1;0;0;0;0;0;1))

O resultado final são as três linhas de dados mostradas em F9: H11

Com valores embutidos em código

Embora a fórmula no exemplo use critérios inseridos diretamente na planilha, os critérios podem ser codificados como constantes de matriz em vez de assim:

=FILTER(B5:D16, ISNUMBER(MATCH(items,("Tshirt";"Hoodie"),0))* ISNUMBER(MATCH(colors,("Red";"Blue"),0))* ISNUMBER(MATCH(cities,("Denver";"Seattle"),0)))

Artigos interessantes...