DIVIDE no DAX: Como Evitar Erros de Divisão por Zero no Power Pivot

Para evitar erros de divisão por zero em medidas DAX no Power Pivot ou no Power BI, use a função DIVIDE(numerador; denominador; [resultado_alternativo]) em vez do operador de divisão comum (/) — ela intercepta automaticamente denominadores zerados ou vazios (BLANK) e devolve o valor alternativo que você definir, sem gerar erro nem travar o relatório.

Você já criou uma medida de percentual ou de ticket médio no Power Pivot que funcionava perfeitamente, até aparecer uma categoria, um mês ou um vendedor sem nenhum valor na base — e a medida inteira passou a exibir um erro ou um número sem sentido?

Sem um jeito de tratar esse cenário, cada denominador zerado pode derrubar um cartão inteiro do dashboard, obrigando você a empilhar funções SE e ISERROR para tentar prever todos os casos em que isso pode acontecer — uma solução mais lenta e mais difícil de manter do que parece.

Neste artigo iremos mostrar por que a divisão simples quebra em medidas DAX, a sintaxe da função DIVIDE, quando ainda vale usar o operador de divisão comum, e um exemplo prático completo de medida de percentual de atingimento de meta.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

Por que a divisão simples (/) quebra em medidas DAX

No DAX, o operador / segue as regras de ponto flutuante: dividir um número diferente de zero por zero não retorna um erro tratável como o #DIV/0! do Excel comum, e sim Infinity (infinito positivo ou negativo, dependendo do sinal) ou NaN quando o resultado é 0/0. Esses valores aparecem no visual como um erro genérico, e funções como SEERRO nem sempre conseguem capturá-los de forma limpa, porque tecnicamente não é sempre um “erro” no sentido que o DAX reconhece.

A sintaxe da função DIVIDE

A função DIVIDE resolve esse problema de forma direta:

=DIVIDE(numerador; denominador; [resultado_alternativo])

O terceiro argumento é opcional. Se você não informar nada e o denominador for zero ou BLANK, a função retorna BLANK (célula vazia no visual, sem erro). Se você informar um valor — geralmente 0 — esse valor é devolvido no lugar do erro, garantindo que o cartão ou gráfico continue exibindo algo coerente em vez de quebrar.

Exemplo prático: percentual de atingimento de meta

Imagine uma tabela com vendas realizadas e a meta de cada vendedor, incluindo um vendedor novo que ainda não recebeu meta cadastrada (denominador zero):

A B C
1 Vendedor Vendas Meta
2 Ana 18000 15000
3 Bruno 9500 12000
4 Carla (nova) 1200 0

Uma medida escrita com o operador de divisão comum,

% Atingimento (com erro) = SUM(Vendas[Vendas]) / SUM(Vendas[Meta])

retorna Infinity assim que o filtro cai sobre a linha da Carla, porque o denominador é zero. Reescrevendo com DIVIDE:

% Atingimento = DIVIDE( SUM(Vendas[Vendas]); SUM(Vendas[Meta]); 0 )

Agora, para Ana o resultado é 1,20 (120% da meta), para Bruno é 0,79 (79%), e para Carla — que não tem meta cadastrada — a medida devolve exatamente 0, em vez de travar o visual com um erro de divisão.

Quando ainda vale usar o operador / em vez de DIVIDE

A recomendação oficial da Microsoft (e da comunidade DAX, incluindo referências como a SQLBI) é: use DIVIDE sempre que o denominador for uma expressão que pode retornar zero ou BLANK, como o resultado de outra medida ou de uma soma filtrada. Quando o denominador é uma constante que nunca será zero — por exemplo, dividir por um número fixo como 12 para calcular uma média mensal — o operador / comum é mais rápido, porque o DAX não precisa gastar processamento verificando uma condição que nunca vai ocorrer.

DIVIDE não é interceptado por SEERRO

Um detalhe importante: como o DIVIDE já trata o caso de divisão por zero internamente e devolve o resultado alternativo (ou BLANK) sem lançar um erro formal, envolver a fórmula com SEERRO por cima dela é redundante — o SEERRO simplesmente nunca vai ser acionado, porque o DIVIDE já não gera esse tipo de erro capturável.

Erros comuns

O erro mais comum é esquecer o terceiro argumento e depois ficar surpreso ao ver células em branco no visual em vez de zero — se você quer que o percentual apareça como 0% em vez de vazio, é preciso informar explicitamente o 0 como resultado alternativo. Outro erro é tentar recriar a lógica do DIVIDE manualmente com SE(SUM(Meta)=0; 0; SUM(Vendas)/SUM(Meta)) — funciona, mas é mais lento e mais verboso do que simplesmente usar a função pronta para esse fim.

Disponibilidade

A função DIVIDE existe em qualquer lugar onde o DAX é usado: Power Pivot no Excel 2013 e versões posteriores (incluindo Microsoft 365, exclusivo do Windows), Power BI Desktop e Power BI Service. O Excel para Mac e o Excel Online não têm Power Pivot, portanto não suportam DIVIDE. O Google Sheets não tem um equivalente direto, já que não usa o motor DAX — a alternativa mais próxima lá é embutir uma função SE dentro da fórmula de divisão.

Perguntas frequentes

Por que minha medida de divisão retorna “Infinity” em vez de um erro comum?

Porque o DAX segue as regras de ponto flutuante: número diferente de zero dividido por zero retorna Infinity, e 0/0 retorna NaN, em vez do #DIV/0! do Excel comum. A função DIVIDE evita esse problema tratando o caso internamente.

O terceiro argumento do DIVIDE é obrigatório?

Não. Se você omitir o resultado alternativo e o denominador for zero ou BLANK, a função retorna BLANK (célula vazia). Informar um valor, geralmente 0, só é necessário quando você quer que apareça um número específico em vez de vazio.

DIVIDE é sempre mais rápido que o operador /?

Não necessariamente. Quando o denominador é uma constante que nunca será zero, o operador / é mais rápido, porque o DIVIDE gasta processamento extra verificando a condição de zero/BLANK a cada linha calculada.

Veja também: Como Dominar o CALCULATE no DAX do Power BI, já que o DIVIDE costuma aparecer dentro de medidas construídas com CALCULATE.

Compartilhe ou Comente

Se você curtiu esse artigo aonde mostramos a diferença entre o operador de divisão comum e a função DIVIDE no DAX, por que a divisão simples quebra com denominador zero, e um exemplo prático de medida de percentual de atingimento de meta, 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.

Você já teve um dashboard quebrado por causa de uma divisão por zero escondida numa medida? Prefere sempre usar DIVIDE por segurança, ou só quando o denominador realmente pode zerar? Conta para nós nos comentários!

Deixe um comentário

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