Fórmula do Excel: conte valores únicos com critérios -

Índice

Fórmula genérica

=SUM(--(LEN(UNIQUE(FILTER(range,criteria,"")))>0))

Resumo

Para contar valores exclusivos com uma ou mais condições, você pode usar uma fórmula baseada em UNIQUE e FILTER. No exemplo mostrado, a fórmula em H7 é:

=SUM(--(LEN(UNIQUE(FILTER(B6:B15,C6:C15=H6,"")))>0))

que retorna 3, uma vez que há três nomes exclusivos em B6: B15 associado ao projeto Omega.

Observação: esta fórmula requer fórmulas de matriz dinâmica, disponíveis apenas no Excel 365. Com uma versão mais antiga do Excel, você pode usar fórmulas alternativas mais complexas.

Explicação

Basicamente, essa fórmula usa a função UNIQUE para extrair valores exclusivos e a função FILTER aplica critérios.

Trabalhando de dentro para fora, a função FILTRO é usada para aplicar critérios e extrair apenas nomes que estão associados ao projeto "Omega":

FILTER(B6:B15,C6:C15=H6) // Omega names only

O resultado de FILTER é uma matriz como esta:

("Jim";"Jim";"Carl";"Sue";"Carl")

Em seguida, a função UNIQUE é usada para remover duplicatas:

UNIQUE(("Jim";"Jim";"Carl";"Sue";"Carl"))

o que resulta em uma nova matriz como esta:

("Jim";"Carl";"Sue") // after UNIQUE

Neste ponto, temos uma lista exclusiva de nomes associados ao Omega e só precisamos contá-los. Pelas razões explicadas abaixo, fazemos isso com a função LEN e a função SUM. Para deixar as coisas claras, primeiro reescreveremos a fórmula para incluir a lista exclusiva:

=SUM(--(LEN(("Jim";"Carl";"Sue"))>0))

A função LEN obtém o comprimento de cada item da lista e retorna uma matriz de comprimentos:

LEN(("Jim";"Carl";"Sue")) // returns (3;4;3)

A seguir, verificamos se os comprimentos são maiores que zero:

LEN((3;4;3)>0 // returns (TRUE;TRUE;TRUE)

E use um duplo negativo para forçar os valores TRUE e FALSE a 1s e 0s:

--((TRUE;TRUE;TRUE)) // returns (1;1;1)

Finalmente, adicionamos os resultados com a função SUM:

=SUM((1;1;1)) // returns 3

Essa matriz é entregue diretamente à função CONT.valores, que retorna uma contagem final:

=COUNTA(("Jim";"Carl";"Sue")) // returns 3

Observe que, como estamos verificando o comprimento de cada item retornado por UNIQUE, as células em branco ou vazias que atendem aos critérios são ignoradas. Esta fórmula é dinâmica e será recalculada imediatamente se os dados de origem forem alterados.

Contagem única com vários critérios

Para contar valores exclusivos com base em vários critérios, pode estender a lógica de "inclusão" dentro de FILTER. Por exemplo, para contar nomes exclusivos para o projeto Omega apenas em junho, use:

=SUM(--(LEN(UNIQUE(FILTER(B6:B15,(C6:C15=H6)*(D6:D15="june"))))>0))

Este é um exemplo de uso da lógica booleana para aplicar mais de uma condição. A abordagem é explicada com mais detalhes aqui.

Para obter mais detalhes, consulte este vídeo de treinamento: Como filtrar com vários critérios.

CONT.valor

É possível escrever uma fórmula mais simples que responda na função CONT.valores. No entanto, uma advertência importante é que CONT.valores retornará 1 quando não houver valores correspondentes. Isso ocorre porque a função FILTER retorna um erro quando nenhum dado corresponde aos critérios, e esse erro acaba sendo contado pela função CONT.valores. A fórmula básica CONT.valores se parece com esta:

=COUNTA(UNIQUE(FILTER(B6:B15,C6:C15=H6)))

Novamente, essa fórmula retornará 1 quando não houver dados correspondentes. Também incluirá células vazias que atendam aos critérios. A fórmula baseada em LEN e SUM é a melhor opção.

Sem matrizes dinâmicas

Se você estiver usando uma versão mais antiga do Excel sem suporte de matriz dinâmica, poderá usar uma fórmula mais complexa. Para uma discussão mais geral sobre alternativas de array dinâmico, consulte: Alternatives to Dynamic Array Formulas.

Artigos interessantes...