Rounding numbers in microsoft excel

  • Thread starter Thread starter Dell
  • Start date Start date
  • Tags Tags
    Excel Numbers
AI Thread Summary
To round numbers in a spreadsheet to two decimal points according to specific rules, the following logic is applied: for a number with three decimal places, if the third digit (x) is greater than 5, round up; if x is less than 5, round down; if x equals 5, round up if the second digit (y) is odd and round down if y is even. The ROUND function does not meet these requirements as it always rounds 5 upwards. A suggested formula to achieve the desired rounding is: =IF((RIGHT(A1,1)<>"5"),ROUND(A1,2),IF(ISODD(A1*100),ROUND(A1,2),TRUNC(A1,2))). For more complex scenarios, a user-defined function in VBA is recommended.
Dell
Messages
555
Reaction score
0
i need to round numbers in a spreadsheet 2 decimal points, in a way that:

for a number with a.byX

for x>5 i need to round upwards
for x<5 i need to round downwards
for x=5 i need to round up if y is odd and round down if y is even

for example

0.563~0.56
0.566~0.57
0.575~0.58
0.565~0.56

i tried using if, roundup, rounddown, floor,, can't seem to get it right
any ideas
 
Computer science news on Phys.org
Just set the cell format to show the number of digits you want. Setting the precision in the cell format does exactly what you need.
 
no, i need it to round the numbers for me, i need them for calculations and i need them to be exacly the way i stated
 
There is always the ROUND function. You can also do a user defined function.
 
but the round fuction always rounds 5 upwards,
0.5->1
1.5->2
2.5->3
3.5->4...

i need
0.5->0
1.5->2
2.5->2
3.5->4
4.5->4

always rounding to the even number,
only that i need it to the 2nd decimal point no to the whole number
 
As long as you're only dealing with rounding numbers with 3 decimal places down to 2 decimal places, this will work:

=IF((RIGHT(A1,1)<>"5"),ROUND(A1,2),IF(ISODD(A1*100),ROUND(A1,2),TRUNC(A1,2)))

Enter this formula in any cell except A1.
Enter your number in cell A1.

To make this work for other types of numbers, I would write a user defined function in VBA.
 
Dell said:
0.563~0.56
0.566~0.57
0.575~0.58
0.565~0.56

Your example seems to be flawed. Shouldn't 0.566~0.56 , according to your specification?
 
The example's not flawed, the explanation is a bit unclear though.

"b" refers to the 1st digit to the right of the decimal point
"y" refers to the 2nd
"x" refers to the 3rd

His rules state that for "x" > 5, round upward, therefore in 0.566,
"x" is equal to 6 which is greater than 5, so round upward to 0.57
 
I see. sorry. In hindsight I see that it was perfectly explained all along.
 
  • #10
zgozvrm said:
To make this work for other types of numbers, I would write a user defined function in VBA.

I've already written VBA code for this.
Let me know if you're interested.
 
Back
Top