Neste artigo irei mostrar como podes utilizar a função FILTRAR [FILTER] desta vez retornando um resultado mesmo quando o valor a procurar não se encontra completo. Com a função FILTRAR [FILTER] necessitamos que o valor a procurar seja exatamente igual a um valor que exista na lista ou intervalo de critério, caso contrário a função devolve o erro #CALC, que pode ser substituído por qualquer valor quando aplicamos o argumento se_vazia.
Vamos recordar a sintaxe base da função:
FILTRAR(matriz;incluir;[se_vazia])
- matriz (obrigatório): O intervalo que pretendemos filtrar.
- incluir (obrigatório): O intervalo comparado ao critério que pretendemos utilizar para aplicar o Filtro.
- se_vazia (opcional): Valor a mostrar, caso o resultado da filtragem dos dados não devolva resultados.
No caso, o argumento incluir deve conter o valor exatamente igual no intervalo e no valor a comparar, para devolver as correspondências. Isto significa que na sua génese a função FILTRAR vai avaliar no intervalo a incluir todos os valores VERDADEIRO [TRUE] que correspondem ao valor correspondente da função. Os valores VERDADEIRO são retornados e os valores FALSO são excluídos.

A imagem em baixo demostra o conceito que está pro trás da função, quando analisamos o segundo argumento da função (incluir).

O que significa que a função FILTRAR, não está “preparada” para retornar verdadeiro quando fazemos uma pesquisa “aproximada” ou com caracteres universais como o “*”. Ou seja, não é possível por exemplo no critério de pesquisa utilizar a palavra “New” apenas para retornar todos os artigos da marca “New Balance”.

Devolver resultado com uma pesquisa “incompleta”
Para contornar a situação podemos utilizar a função PROCURAR [SEARCH] ou mesmo a função LOCALIZAR [FIND] (caso pretendemos uma pesquisa sensível a maiúsculas e minúsculas). A função PROCURAR permite encontrar a localização de uma expressão dentro de um texto.

O resultado da função PROCURAR é o esperado pela função, mas ainda não é um resultado ideal para a função FILTRAR, pois a função PROCURAR encontra a ocorrência da palavra “Sapatilha” e devolve um valor numérico [1]. Todos os restantes valores que não contém “Sapatilha” devolvem o erro de #VALOR.
=PROCURAR(J4;Produtos[Produto])

Contudo, se utilizarmos uma das funções de informação, como por exemplo a função É.NUM [ISNUMBER] convertemos o resultado em VERDADEIRO / FALSO que é ideal para a função FILTRAR.
=É.NUM(PROCURAR(J4;Produtos[Produto]))

O resultado é o ideal para a função FILTRAR.

Se aplicarmos então esta lógica no argumento incluir da função FILTRAR obtemos um resultado mesmo que o valor a incluir no filtro seja um valor aproximado ou incompleto, dando total flexibilidade para obter os dados.

O resultado é o esperado…

Exemplo: Devolver apenas valores “numéricos”
Com esta lógica, podemos agora implementar outras soluções, que permite aumentar o potencial de resultados disponíveis. Por exemplo podemos filtrar “apenas” os produtos cujo tamanho contém valores numéricos.
=FILTRAR(Produtos;É.NÚM(Produtos[Tamanho]);”Sem Dados”)
Neste caso a função já nem necessita de um valor a ser comparada com, no argumento incluir.
E o resultado apresenta apenas produtos cujo tamanho seja definido por números.

Exemplo: Devolver apenas valores “de texto”
As possibilidades são agora imensas! Podemos agora filtrar “apenas” os produtos cujo tamanho contém valores de texto (“L”, “XL”, “M”, etc…)
=FILTRAR(Produtos;É.TEXTO(Produtos[Tamanho]);”Sem Dados”)

Exemplo: Devolver produtos sem tamanho
Para podermos obter todos as possibilidades porque não encontrar todos os produtos que não têm um tamanho definido…
=FILTRAR(Produtos;É.CÉL.VAZIA(Produtos[Tamanho]);”Sem Dados”)


Leave a Reply