Duplo traço no Excel com PROCX: como combinar o operador — com as funções de busca modernas

Se você já usa o PROCX no Excel 365 e acha que já sabe tudo que ele pode fazer, prepare-se para descobrir uma combinação que vai elevar ainda mais o nível das suas fórmulas. O duplo traço — o operador — — tem um papel específico e muito útil quando combinado com funções de busca como PROCX, FILTRO e ÚNICO. Ele resolve problemas que surgem quando as buscas retornam resultados lógicos ou quando os critérios de busca envolvem expressões que o Excel precisa converter para número antes de processar. Neste artigo iremos mostrar como usar o duplo traço com PROCX e as funções modernas do Excel 365 para criar buscas mais inteligentes e resultados mais confiáveis.

Por que o duplo traço aparece dentro do PROCX e do FILTRO

O PROCX é uma função de busca que retorna o valor correspondente de um intervalo de retorno baseado em uma condição de correspondência. A expressão de busca do PROCX pode ser uma comparação lógica — por exemplo, encontrar todos os valores maiores que 100 — mas quando essa expressão retorna VERDADEIRO/FALSO, o PROCX precisa trabalhar com números para a correspondência funcionar corretamente. O duplo traço antes da expressão de busca converte VERDADEIRO em 1 e FALSO em 0, tornando a lógica de correspondência explícita e confiável.

Com a função FILTRO, o duplo traço é especialmente útil quando os critérios de filtragem combinam múltiplas condições. =FILTRO(A1:C100; –(B1:B100>500)*–(C1:C100=”Sul”)) filtra as linhas onde B é maior que 500 E C é “Sul”. Sem o duplo traço, a multiplicação de dois arrays lógicos pode funcionar na maioria das situações, mas o duplo traço garante que a conversão é explícita e o comportamento é consistente em qualquer versão do Excel 365. A fórmula com duplo traço é também mais fácil de auditar — qualquer pessoa que conhece o operador sabe imediatamente que cada — significa “converta esta condição em 0 ou 1”.

Para a função ÚNICO combinada com FILTRO, o duplo traço permite criar listas únicas filtradas por condições calculadas. =ÚNICO(FILTRO(A1:A100; –(MÊS(B1:B100)=MÊS(HOJE())))) extrai os valores únicos da coluna A apenas para os registros do mês atual. O –(MÊS(B1:B100)=MÊS(HOJE())) verifica se o mês de cada data em B é o mês atual, converte em 1/0 e o FILTRO usa esses 1/0 para incluir ou excluir cada linha. O ÚNICO então elimina duplicatas do resultado filtrado. Essa cadeia de funções com duplo traço resolve em uma única fórmula o que antes exigiria colunas auxiliares e múltiplas etapas.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

Duplo traço no PROCX para buscas com condições calculadas

O PROCX tem um argumento de critério flexível que aceita qualquer array de VERDADEIRO/FALSO como critério de busca. Para encontrar o primeiro valor em A onde B é maior que 500 E C é “Sul”: =PROCX(1; –(B1:B100>500)*–(C1:C100=”Sul”); A1:A100). Aqui, o valor procurado é 1, o intervalo de busca é o array resultante da multiplicação das condições (que resulta em 1 apenas quando ambas são verdadeiras) e o intervalo de retorno é A. O PROCX encontra a primeira posição onde o array de busca vale 1 e retorna o valor correspondente de A.

Esse padrão de buscar o número 1 em um array de condições com duplo traço é uma das técnicas mais poderosas do Excel 365. Ele substitui o padrão antigo de ÍNDICE+CORRESP com múltiplos critérios que exigia fórmulas de array complexas e confirmação com Ctrl+Shift+Enter. Com PROCX e duplo traço, a mesma lógica fica muito mais legível: o primeiro argumento (o que você procura) é sempre 1, o segundo argumento (onde procurar) é sempre o resultado das condições com duplo traço multiplicadas, e o terceiro argumento é o que você quer retornar.

Para retornar o último valor que atende às condições em vez do primeiro, use o sexto argumento do PROCX com o valor -1 (busca do final para o início): =PROCX(1; –(B1:B100>500)*–(C1:C100=”Sul”); A1:A100; “Não encontrado”; 0; -1). O quarto argumento (“Não encontrado”) é o valor retornado quando nenhuma correspondência é encontrada. O quinto argumento (0) especifica correspondência exata. O sexto (-1) faz a busca de baixo para cima, retornando o último registro que atende às condições. Esse comportamento de “encontrar o mais recente” era muito trabalhoso de implementar com funções antigas e com duplo traço no PROCX é direto.

Duplo traço para filtrar arrays retornados por funções de busca

Uma aplicação menos conhecida do duplo traço é filtrar ou transformar o resultado de uma função de busca antes de usar em outro cálculo. Quando o FILTRO retorna um array e você quer somar apenas os valores positivos desse array, o duplo traço entra como filtro adicional: =SOMA(–(FILTRO(B1:B100; A1:A100=”Sul”)>0)*FILTRO(B1:B100; A1:A100=”Sul”)). O primeiro FILTRO isola os valores da região Sul. A condição >0 e o duplo traço criam um array de 1/0 que vale 1 apenas para os valores positivos. A multiplicação filtra os positivos. A SOMA totaliza apenas os valores positivos da região Sul.

Para calcular a média apenas dos valores que atendem a uma condição dentro de um resultado filtrado, o padrão é semelhante: =SOMARPRODUTO(–(FILTRO(B1:B100;A1:A100=”Sul”)>0)*FILTRO(B1:B100;A1:A100=”Sul”))/SOMA(–(FILTRO(B1:B100;A1:A100=”Sul”)>0)). O numerador soma os valores positivos da região Sul e o denominador conta quantos são positivos. O resultado é a média dos valores positivos da região Sul — uma análise que combinaria as limitações de MÉDIASE (que não aceita condições calculadas como critério) com o poder do FILTRO e do duplo traço.

O duplo traço também funciona para converter o resultado booleano do PROCX quando ele retorna VERDADEIRO/FALSO de uma comparação. Se você usa o PROCX para verificar se um valor existe em uma lista (retornando VERDADEIRO quando encontra), o duplo traço converte esse resultado em 1 para “existe” e 0 para “não existe”: =–(SEERRO(PROCX(E1;A1:A100;A1:A100);FALSO)=E1). Essa conversão é útil quando você precisa usar o resultado da verificação de existência em um cálculo matemático, como contar ou somar outros campos baseados na presença de determinados valores em uma lista de referência.

Quando o duplo traço resolve o que o PROCX não faz sozinho

O PROCX tem limitações específicas que o duplo traço ajuda a superar. Uma delas é a contagem de correspondências — o PROCX retorna o primeiro ou o último valor que corresponde, mas não conta quantas correspondências existem. Para contar quantas linhas atendem às condições de um PROCX típico: =SOMA(–(B1:B100>500)*–(C1:C100=”Sul”)). Essa soma com duplo traço conta todas as correspondências, enquanto o PROCX sozinho só encontraria a primeira ou a última.

Outra limitação é que o PROCX não retorna diretamente a soma dos valores correspondentes — apenas o valor de uma célula específica. Para somar todos os valores em D que correspondem às condições: =SOMARPRODUTO(–(B1:B100>500)*–(C1:C100=”Sul”)*D1:D100). O duplo traço com SOMARPRODUTO preenche essa lacuna, somando todos os valores em D onde B>500 E C=”Sul” sem precisar do PROCX. A combinação ideal é usar PROCX para retornar um único valor específico (o mais recente, o primeiro, o de uma posição específica) e usar duplo traço com SOMARPRODUTO para agregar múltiplos valores que atendem a condições.

Se você curtiu esse artigo onde mostramos como usar o duplo traço no Excel com PROCX e as funções modernas de busca, 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 *