Notifications
Clear all

ARREDONDANDO PARA CIMA

5 Posts
2 Usuários
0 Reactions
970 Visualizações
(@paiva)
Posts: 65
Trusted Member
Topic starter
 

O problema é arredondar preços para cima não utilizando o "5" como divisor de águas, mas o "9" e mais umas coisinhas.

Por exemplo, temos os seguintes valores:

34,91
34,89
32,23
89,95

Quero transformar esses valores em:

35,90
34,90
32,90
90,90

Algoritmo:
Se o dígito decimal for menor que 9 (ou diferente de 9), automaticamente soma-se 1 na casa da unidade e coloca 0 na casa do centésimo.
Se o dígito decimar for igual a 9, e o dígito centesimal for maior que 0 (ou diferente de zero), soma-se 1 na casa da unidade e coloca 0 na casa do centésimo.
Se o dígito decimar for igual a 9, e o dígito centesimal for exatamente 0, preserva-se o valor.

O problema é como fazer isso, usar vetores e armazenar os inteiros em locus e depois tratá-los (acredito que há uma maneira mais fácil)? Eu programei bastante em C no início da faculdade, pra rever vai demorar alguns minutos ou horas, e o pior é aplicar o C em VBA.

Alguma dica?

obs.: acredito que não há nenhuma função de arredondamento do excel que faça EXATAMENTE isso, e eu preciso de exatamente isso.

 
Postado : 08/02/2013 7:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não chamaria (se é que entendi) de arredondamento. Mas pelo que sei terá que tratar mesmo pelos valores inteiros e centesimos.
Creio que poderia ser algo +/- assim: If valor - int(valor)>=90 then...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/02/2013 7:35 pm
(@paiva)
Posts: 65
Trusted Member
Topic starter
 

Como que eu faço para armazenas esses números em vetores, sendo que podem ter até três casas depois da vírgula e sempre duas depois da vírgula, digo, não vai estar sempre na posição [2] do vetor o valor decimal, e a vírgula do preço, tenha que armazena-la também?

 
Postado : 08/02/2013 10:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Assumindo que seus dados comecem em A2, faça em B2:

=INT(A2)+SE(ARRED(A2-INT(A2);2)>0,9;1,9;0,9)

Arraste.

Abs,

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/02/2013 11:22 pm
(@paiva)
Posts: 65
Trusted Member
Topic starter
 

Olá Mandrix, obrigado! Deu certo, irei tentar entender a expressão, mas como são funções próprias do excel e possuem descrição, creio que não terei problemas. Obrigado novamente.

 
Postado : 09/02/2013 1:27 pm