How can I round prices in Excel?
December 20, 2007 3:08 PM Subscribe
In Excel 2007, I need advice on how to round a series of prices to either a $0.50 ending, or a $0.95 ending.
The first digit or two (the dollars) of the price will vary. The rounding should only occur in the last two digits (the cents).
Prices from $X.00 to $X.49, round up to $X.50.
Prices from $X.51 to $X.94, round up to $X.95.
Prices from $X.96 to $X.99, round down to $X.95.
I was thinking an If Then statement, but not sure how to deal with the differing dollar part of the price.
I'm thinking this is probably easy, and I am just missing something.
Any advice will be greatly appreciated.
The first digit or two (the dollars) of the price will vary. The rounding should only occur in the last two digits (the cents).
Prices from $X.00 to $X.49, round up to $X.50.
Prices from $X.51 to $X.94, round up to $X.95.
Prices from $X.96 to $X.99, round down to $X.95.
I was thinking an If Then statement, but not sure how to deal with the differing dollar part of the price.
I'm thinking this is probably easy, and I am just missing something.
Any advice will be greatly appreciated.
Looking back, it messed with my code since I didn't use the proper tags. Ignore my C++ example, my last sentence is the real answer.
posted by DMan at 3:22 PM on December 20, 2007
posted by DMan at 3:22 PM on December 20, 2007
Presuming your price is in A1:
=IF(A1-INT(A1)<0.5,INT(A1)+0.5,INT(A1)+0.95)
posted by pompomtom at 3:24 PM on December 20, 2007
=IF(A1-INT(A1)<0.5,INT(A1)+0.5,INT(A1)+0.95)
posted by pompomtom at 3:24 PM on December 20, 2007
Try this formula:
=IF(A1-TRUNC(A1,-2)<51,TRUNC(A1,-2)+50,TRUNC(A1,-2)+95)
(replace A1 with whatever cell contains the relevant data.)
The key ingredient here is the TRUNCate function, which cuts off everything past a certain digit. TRUNC(A1,-2) cuts off starting with two spaces to the left of the decimal point.
If dollars and cents are in decimal form, rather than whole-number form, replace with TRUNC(A1,0) or just TRUNC(A1), and replace 51, 50, and 95 with .51, .50, and .95.
posted by CrunchyFrog at 3:25 PM on December 20, 2007
=IF(A1-TRUNC(A1,-2)<51,TRUNC(A1,-2)+50,TRUNC(A1,-2)+95)
(replace A1 with whatever cell contains the relevant data.)
The key ingredient here is the TRUNCate function, which cuts off everything past a certain digit. TRUNC(A1,-2) cuts off starting with two spaces to the left of the decimal point.
If dollars and cents are in decimal form, rather than whole-number form, replace with TRUNC(A1,0) or just TRUNC(A1), and replace 51, 50, and 95 with .51, .50, and .95.
posted by CrunchyFrog at 3:25 PM on December 20, 2007
pompomtom has got the form right, but you actually want
=IF(A1-INT(A1)<>
or else $5.50 will be rounded to $5.95>
posted by ssg at 3:28 PM on December 20, 2007
=IF(A1-INT(A1)<>
or else $5.50 will be rounded to $5.95>
posted by ssg at 3:28 PM on December 20, 2007
Oops, of course my version should be
=IF(A1-INT(A1)<0>1,INT(A1)+0.5,INT(A1)+0.95)0>
posted by pompomtom at 3:30 PM on December 20, 2007
=IF(A1-INT(A1)<0>1,INT(A1)+0.5,INT(A1)+0.95)0>
posted by pompomtom at 3:30 PM on December 20, 2007
and, when not being eaten by mefi:
=IF(A1-INT(A1)<0.51,INT(A1)+0.5,INT(A1)+0.95)
posted by pompomtom at 3:31 PM on December 20, 2007
=IF(A1-INT(A1)<0.51,INT(A1)+0.5,INT(A1)+0.95)
posted by pompomtom at 3:31 PM on December 20, 2007
ugh, i forgot to format my bracket properly:
=IF(A1-INT(A1)<=0.5,INT(A1)+0.5,INT(A1)+0.95)
posted by ssg at 3:31 PM on December 20, 2007
=IF(A1-INT(A1)<=0.5,INT(A1)+0.5,INT(A1)+0.95)
posted by ssg at 3:31 PM on December 20, 2007
Instead of the (A1-INT(A1)), you should be able to just do RIGHT(A1,3).
posted by inigo2 at 7:34 PM on December 20, 2007
posted by inigo2 at 7:34 PM on December 20, 2007
RIGHT(A1,3) will work fine as long as all your prices are correctly formatted with two decimal places. If they are just left in Excel's default format, you will get the wrong result from values like $25.10, which will be stored as 25.1.
posted by ssg at 8:40 AM on December 21, 2007
posted by ssg at 8:40 AM on December 21, 2007
This thread is closed to new comments.
"if (value <>= *.00)
then (whatever)"
(yes, that was C++. Kinda)
I don't know if there's a way to do that, but it seems like you'd be able to say " *.50" to mean "anything ending in .50".>
posted by DMan at 3:22 PM on December 20, 2007