Melhorando produtividade com Excel: COUNTIF/CONTASE (e countifs/contases) com múltiplos critérios

Você tem uma lista de produtos e quer criar um indicador que mostre quantas vezes um determinado grupo de produtos apareceu. Geralmente criamos colunas com chaves, colunas com categorias que existem somente para possibilitar o índice ou ficamos chamando várias vezes as funções de contar e somando o resultado (countif(A:A, “produto_1”)+countif(A:A, “produto_2”)), etc…

Neste post, vou mostrar como utilizar a função countif e a countifs (contase e contases) com múltiplos critérios.

A imagem abaixo exemplifica a situação que citei no inicio do post: Conseguir um índice de quantas vezes os ‘produtos base’ aparecem na lista:

Lista de Produtos

 

Geralmente, o que fazemos é isso: Ir somando COUNTIF até conseguirmos listar todos os produtos. Todavia, você pode substituir as várias chamadas de COUNTIF, cada uma com um critério por apenas uma chamada com múltiplos critérios.

 

A fórmula que está na imagem é essa:

=COUNTIF(A:A; "XPTO Base 1")+COUNTIF(A:A; "XPTO Base 2")

 

Ela pode ser substituída por:

=SUMPRODUCT(COUNTIF(A:A; {"XPTO Base 1";"XPTO Base 2"}))

Na fórmula acima, passo um vetor de valores ({“XPTO Base 1”; “XPTO Base 2”}) para a função COUNTIF, o que faz com que esta função retorne um vetor com o resultado, mas isso não é o que estamos buscando. Para obermos o resultado final, precisamos chamar a função SUMPRODUCT (SOMARPRODUTO) e colocar nela o COUNTIF. Desta forma, a função de contagem vai retornar o vetor com os resultados e o SUMPRODUCT vai somar este vetor.

 

Qual a vantagem de utilizar esta abordagem? 

  1. Mais fácil de ler, pois você pode adicionar quantos valores quiser para o vetor;
  2. Quanto menos chamadas você fizer para funções, melhor será o desempenho da sua planilha.

 

Esta mesma abordagem pode ser utilizada com as funções COUNTIFS (contases).  Para exemplo, vamos imaginar que existe outra lista de produtos na coluna L (de lista). A função pode ser feita assim:

=COUNTIFS(A:A;"XPTO Base 1";A:A;"XPTO Base 2";L:L;"XPTO Base 1";L:L;"XPTO Base 2")

 

Ou pode ser feita assim, utilizando a abordagem deste post:

=SUMPRODUCT(COUNTIFS(A:A;{"XPTO Base 1";"XPTO Base 2"};L:L;{"XPTO Base 1";"XPTO Base 2"}))

 

A lógica é a mesma, mas escrevemos menos e chamamos menos funções.

 

Extra!

Neste caso em especial, como o nome dos produtos que estamos buscando (XPTO Base 1 e XPTO Base 2) é parecido, podemos utilizar uma abordagem ainda mais simples:

=COUNTIF(A:A;"XPTO Base ?")

Na fórmula acima, estamos falando para contar todos os produtos com nome XPTO Base e que contenha um espaço e um caractere qualquer logo depois. Isso não é um indicador de ‘contém’, mas uma máscara que indica que qualquer caractere pode estar naquela posição.

Sendo assim, se quisermos contar quantas vezes os produtos ABCD Base A e XPTO Base 1 aparecem, podemos fazer assim:

=COUNTIF(A:A;"???? Base ?")

Isso vai funcionar, pois XPTO e ABCD tem o mesmo número de caracteres e estão na mesma posição. O mesmo vale para a letra A e o número 1 que estão ao final do nome do produto.

 

Espero ter ajudado.

 

Referências:

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Software, Suporte and tagged , , , .