
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)))