Traço duplo em fórmulas de array no Excel: como destravar cálculos que o CONT.SES não consegue resolver

Existe uma classe de problemas de contagem e soma no Excel que as funções nativas como CONT.SES e SOMASES simplesmente não conseguem resolver. Contagens onde o critério depende de uma função de texto, somas onde a condição envolve datas calculadas, contagens que misturam lógica E com lógica OU na mesma fórmula. Para esses problemas, a solução está nas fórmulas de array combinadas com o traço duplo. Neste artigo iremos mostrar como o traço duplo funciona em fórmulas de array no Excel e como ele resolve problemas de contagem e soma avançados que emperram qualquer usuário intermediário.

Fórmulas de array no Excel: o que são e como o traço duplo se encaixa

Uma fórmula de array é uma fórmula que processa um intervalo de valores de uma só vez, retornando um array de resultados ou um único valor calculado a partir de todo o array. Em versões antigas do Excel (antes do 365), fórmulas de array precisavam ser confirmadas com Ctrl+Shift+Enter em vez do Enter simples — o Excel exibia chaves {} ao redor da fórmula como indicação de que era uma fórmula de array. No Excel 365, as funções de array dinâmico eliminaram boa parte dessa necessidade, mas muitas fórmulas avançadas ainda usam o padrão de array.

O traço duplo se encaixa nas fórmulas de array como um conversor que permite que expressões lógicas — que naturalmente retornam arrays de VERDADEIRO/FALSO — sejam usadas em cálculos matemáticos. Quando você escreve A1:A10>5, o resultado é um array de dez VERDADEIROS e FALSOs. Colocar — na frente converte esse array em dez 1s e 0s, que podem ser somados, multiplicados, comparados ou usados em qualquer operação matemática. Essa conversão é o que torna possível construir fórmulas de contagem e soma com lógica arbitrariamente complexa.

A diferença entre usar o traço duplo em uma fórmula de array e simplesmente usar o CONT.SES é exatamente a flexibilidade dos critérios. O CONT.SES aceita apenas critérios fixos: um valor, um operador de comparação com um valor, ou um curinga de texto. O traço duplo em uma fórmula de array aceita qualquer expressão que retorne VERDADEIRO ou FALSO para cada elemento do array — o que inclui qualquer função do Excel, qualquer operação matemática e qualquer combinação de condições. Essa flexibilidade ilimitada é o poder das fórmulas de array com traço duplo.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

Contando com critérios que o CONT.SES não aceita

O CONT.SES aceita critérios como: “Sul”, “>100”, “A*” (com curinga). Ele não aceita como critério: funções como DIA.DA.SEMANA, ESQUERDA, DIREITA, EXT.TEXTO, NÚM.CARACT, É.NÚM, É.TEXTO, NÚM.SEMANA, ANO, MÊS, DIA, nem expressões calculadas. Para qualquer um desses critérios, você precisa do traço duplo com SOMA ou SOMARPRODUTO.

Exemplos práticos de contagens impossíveis para o CONT.SES e possíveis com traço duplo. Contar textos com mais de 8 caracteres: =SOMA(–(NÚM.CARACT(A1:A100)>8)) — o NÚM.CARACT calcula o comprimento de cada texto, a comparação >8 retorna VERDADEIRO/FALSO para cada um, o traço duplo converte em 1/0 e a SOMA conta os que atendem a condição. Contar datas que caem no mês de março (qualquer ano): =SOMA(–(MÊS(A1:A100)=3)) — o MÊS extrai o mês de cada data, a comparação =3 gera o array lógico, o traço duplo converte e a SOMA conta. Contar células onde os primeiros dois caracteres são “AB”: =SOMA(–(ESQUERDA(A1:A100;2)=”AB”)) — a ESQUERDA extrai dois caracteres de cada célula, a comparação =”AB” gera o array, o traço duplo converte e a SOMA conta.

Para combinar múltiplos critérios com lógica E (todos precisam ser verdadeiros), multiplique os arrays com traço duplo: =SOMA(–(A1:A100=”Norte”)*–(MÊS(B1:B100)=3)). Isso conta as linhas onde A é “Norte” E o mês de B é março. A multiplicação de dois arrays de 1/0 resulta em 1 apenas quando os dois são 1 (ambas as condições verdadeiras) — é a lógica E realizada matematicamente. Para lógica OU, some os arrays e teste se o resultado é maior que zero: =SOMA(–(((–(A1:A100=”Norte”))+(–(A1:A100=”Sul”)))>0)).

Somas condicionais impossíveis para o SOMASES

O SOMASES tem as mesmas limitações de critérios que o CONT.SES — aceita apenas valores fixos e operadores simples, não funções calculadas. Para somar valores onde o critério envolve uma função, o traço duplo com SOMA em array ou SOMARPRODUTO é a solução. Somar valores em B onde o correspondente em A é um número par: =SOMA(–(MOD(A1:A100;2)=0)*B1:B100) — o MOD calcula o resto da divisão por 2, =0 verifica se é par, o traço duplo converte em 1/0, a multiplicação por B filtra os valores pares e a SOMA soma.

Somar valores em B onde o correspondente em A está acima da média do próprio intervalo: =SOMA(–(A1:A100>MÉDIA(A1:A100))*B1:B100). Aqui, MÉDIA(A1:A100) calcula a média de todo o intervalo, a comparação > verifica cada célula contra essa média, o traço duplo converte e a multiplicação por B filtra. O SOMASES não consegue usar MÉDIA como critério dinamicamente — com o traço duplo em array, isso é direto.

Somar apenas os valores positivos de um intervalo (ignorando negativos e zeros): =SOMA(–(A1:A100>0)*A1:A100). A condição >0 filtra apenas os positivos, e o próprio intervalo A é multiplicado pelo filtro — somando apenas os valores positivos. Esse padrão de –condicao*valores é um dos mais versáteis com o traço duplo: qualquer condição que você consiga expressar como uma comparação ou função retornando VERDADEIRO/FALSO pode ser usada para filtrar qualquer conjunto de valores, sem criar colunas auxiliares e sem usar macros.

Diferenças de comportamento entre Excel tradicional e Excel 365

Em versões do Excel anteriores ao 365, fórmulas de array com traço duplo precisam ser confirmadas com Ctrl+Shift+Enter. Quando você digita =SOMA(–(A1:A10>5)) e pressiona Ctrl+Shift+Enter, o Excel adiciona chaves automaticamente ao redor da fórmula: {=SOMA(–(A1:A10>5))}. Se você pressionar apenas Enter, a fórmula pode retornar resultado errado ou avaliar apenas a primeira célula do intervalo em vez de todo o array. Esse é um dos erros mais frustrantes para quem está aprendendo fórmulas de array — a fórmula está correta, mas o resultado é errado porque faltou o Ctrl+Shift+Enter.

No Excel 365, a maioria das fórmulas de array com traço duplo funciona com Enter simples porque o motor de cálculo do Excel 365 tem suporte nativo a arrays dinâmicos. =SOMA(–(A1:A100>5)) com Enter simples no Excel 365 avalia corretamente todo o intervalo e retorna a soma dos 1s. Para garantir compatibilidade com versões mais antigas, sempre use Ctrl+Shift+Enter em fórmulas de array com traço duplo — no Excel 365 isso não causa problema, mas no Excel 2016 ou 2019 a diferença pode ser a fórmula funcionar ou não funcionar.

Se você curtiu esse artigo onde mostramos como usar o traço duplo em fórmulas de array no Excel para resolver contagens e somas avançadas, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *