Como arredondar um preço para acabar em ,99 ou ,x9

Como automatizar facilmente os arredondamentos de preços psicológicos para as terminações mais comuns: ",x9" e ",99"
Arredondar um preço para acabar em ,x9 ou ,99

Resumo

Se queremos calcular o preço de venda de um artigo, o habitual é que a base de partida seja o preço de custo e a margem de lucro que queremos atingir com a sua venda.

Para isso, aplicamos um markup ao preço de custo e construímos um preço de venda que gera a margem desejada na venda. Mas esse preço pode não ter exactamente uma terminação muito "comercial".

É comum encontrarmos muitos preços de venda acabados em nove. São os chamados preços psicológicos e neste artigo vamos mostrar-te como podes facilmente automatizar os arredondamentos para as terminações que quiseres, tomando como exemplo as terminações mais comuns: ",x9" e ",99".

Arredondar para terminar em ,x9

Arredondar para terminar em 9

Se queremos todos os preços com duas casas decimais e a terminar em 9. Aplicamos a Função ROUND ao valor que queremos arredondar com o argumento "1" para arredondar à primeira casa decimal. De seguida, subtraímos "-0,01" e chegamos ao preço pretendido terminado em 9 na segunda casa decimal.
=ROUND($C5;1)-0,01 // terminar em ,x9 com arredondamento
=ROUND(1,245;1)-0,01
=ROUND(1,20)-0,01
=1,20-0,01
=1,19
Nota que nesta fórmula não estamos a definir se o arredondamento é por excesso ou por defeito. Estamos apenas a dar indicação que deve ser aplicado um arredondamento seguindo as regras de arredondamento definidas pelo algarismo ">5" ou "<5", ou seja:

44,24 passa para 44,2
22,87 passa para 22,9

Arredondar para terminar em ,99

Arredondar para terminar em .99

Seguindo o mesmo modelo do exemplo anterior, se quisermos que todos os preços terminem em ",99", usamos a mesma fórmula e substituímos o argumento "1" por "0".

Esta substituição irá arredondar o valor de partida para o número inteiro mais próximo (por excesso ou por defeito) ao qual subtraímos "0,01" para encontrar o valor imediatamente anterior terminado em ",99".
=ROUND($C5;0)-0,01 // terminar em ,99 com arredondamento
=ROUND(1,245;0)-0,01
=ROUND(1)-0,01
=1-0,01
=0,99

Forçar arredondamento por excesso (para cima)

Se quisermos forçar o arredondamento por excesso, ou seja sempre para o número superior, basta apenas substituir a função ROUND pela função ROUNDUP.

Forçar arredondamento por excesso (para cima)
=ROUNDUP($C5;1)-0,01 // terminar em ,x9 com arredondamento para cima
=1,30-0,01
=1,29
=ROUNDUP($C5;0)-0,01 // terminar em ,99 com arredondamento para cima
=2-0,01
=1,99

Argumentos da função ROUND, ROUNDUP, ROUNDDOWN

DígitoResultado
0Arredonda para o número inteiro mais próximo
>0Arredonda para o valor mais próximo .1, .01, .001, etc.
<0Arredonda para o valor mais próximo 10, 100, 1000, etc.
ValorArredondamentoFórmula
1008,8567121009=ROUND(E4;0)
1008,8567121008,9=ROUND(E6;1)
1008,8567121008,86=ROUND(E7;2)
1008,8567121008,857=ROUND(E8;3)
1008,8567121008,8567=ROUND(E9;4)
4,90=ROUND(E11;-1)
9,710=ROUND(E12;-1)
98,3100=ROUND(E13;-2)
778,91000=ROUND(E14;-3)
7654,110000=ROUND(E15;-4)

Descargas

Descarrega aqui o ficheiro com os exemplos do artigo para arredondar preços para acabar em ,99 ou ,x9