Notifications
Clear all

Metado de Arredondamento

4 Posts
3 Usuários
0 Reactions
1,149 Visualizações
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Bom dia, pessoal!

Estou com dificuldades para montar um metado para arredondar um valor. Ao arredondar um valor com três ou mais casas decimais não consigo fazer com que a terceira casa decimal se for igual ou maior que 5 a segunda casa decimal aumente 1.

Preciso que o valor 1,765 seja arredondado para 1,77 o que você me dizem!!!!

Arredondar = Vlr_Bruto * Taxa

1,765 = 50 * 0.0353

Arredondar = Math.Round((Vlr_Bruto * Taxa), 2)

1,76 = 50 * 0.0353

 
Postado : 22/10/2016 7:43 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde Kaleo_rs,

Ao invés de criar uma formula para isso, use a função ARRED do excel, por exemplo se você escrever =ARRED(1,765;2) o resultado é 1,77.

att,

 
Postado : 22/10/2016 3:33 pm
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Brunoxro...

A função ARRED dá um erro de execução da MACRO. Eu que eu saiba a função ARRED é para ser usada na célula.

 
Postado : 22/10/2016 4:29 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Olá, Kaleo

O Brunoxro tem razão, a função de planilha ARRED faz arredondamento que vc deseja, prá cima, quando o algarismo a abandonar é o 5 não seguido por mais nenhum algarismo significativo.

Por outro lado, o algoritmo da função Round do VBA usa o método do "Arredondamento do Banqueiro" (banker's rounding) ou "Arredondamento para números pares" que no meu entendimento é um algoritmo mais correto (ou mais justo), pois equilibra a quantidade de arredondamentos para cima e para baixo quando o valor está exatamente no meio. (Ex.: cinquenta centavos fica exatamente no meio entre zero e um real, então por que razão sempre arredondar R$ 0,50 para R$ 1,00?). Além dos bancos, é inclusive é a metodologia utilizada pelo IBGE (Resolução nº. 886/66). Nessa técnica, caso o algarismo a abandonar seja o 5 não seguido por mais nenhum algarismo significativo, verifica o algarismo anterior. Se for par, permanece. Se for ímpar, aumenta um. Então o algarismo a permanecer sempre será par.

Para usar a função de planilha ARRED no VBA, use o método Round do objeto WorksheetFunction:

Sub DifArredond()
  'Mostra as diferenças entre o Arredondamento do Banqueiro (VBA.Round)
  ' e da função de planilha ARRED (Round)
  Const x As Double = 1.765
  Debug.Print Math.Round(x, 2), Application.WorksheetFunction.Round(x, 2)
  'Resultado:  1,76    1,77
End Sub

 
Postado : 23/10/2016 8:30 pm