View Single Post
  #13   Report Post  
Posted to microsoft.public.excel.programming
Don Guillett Don Guillett is offline
external usenet poster
 
Posts: 10,124
Default Rounding a Rounded Number

Hope it helped. Merry xmas too.

--
Don Guillett
SalesAid Software

"Ken Hudson" wrote in message
...
Thanks Don.
Merry Christmas!

--
Ken Hudson


"Don Guillett" wrote:

MsgBox round(Round(Range("a1") * 1.075,2) * 0.25, 2)=7.28

MsgBox Application.Round(Application.Round(Range("e1") * 1.075, 2) *
0.25,
2)=7.29


--
Don Guillett
SalesAid Software

"Don Guillett" wrote in message
...
sub oneliner()
MsgBox Round(Range("a1") * 1.075 * 0.25, 2)
or test
MsgBox round(Round(Range("a1") * 1.075,2) * 0.25, 2)

end sub


--
Don Guillett
SalesAid Software

"Ken Hudson" wrote in message
...
Hi Don,
I'm not sure the one-liner would give the result I needed.
The calculation is payroll related and I need to round the first
reponse
before multiplying again.
If I get three decimals in the first calculation and multiply that by
another number without having rounded the first answer, wouldn't I get
a
different answer than if I had rounded the first calculation?
For example, if I get 1.549 in the first calcuation and multiply by
1.1,
then: 1.549 * 1.1 = 1.7039 rounded to 1.70
If I round the 1.549 to 1.55, then: 1.55 * 1.1 = 1.705 rounded to 1.71

--
Ken Hudson


"Don Guillett" wrote:

You didn't like the one liner.

sub oneliner()
MsgBox Round(Range("a1") * 1.075 * 0.25, 2)
end sub
--
Don Guillett
SalesAid Software

"Ken Hudson" wrote in message
...
Nick,

That was it - the variable needed to be double precision - although
I
don't
know why.

Thanks for the early Christmas present!

Warmest regards....

--
Ken Hudson


"Niek Otten" wrote:

Hi Ken,

Dim your variables as Double, not Single

--
Kind regards,

Niek Otten
Microsoft MVP - Excel


"Ken Hudson" wrote in
message
...
| I'm working in Excel 2003 - VBA.
|
| OldRate is a variable whose value comes from user input into a
cell.
| OldRate=Range("A1")
|
| I am multiplying that variable by 1.075 and need to round up the
result
to
| two decimal places.
| NewRate=Application.Worksheetfunction.Round(OldRat e * 1.075, 2)
|
| Then I need to multiply that rounded result by .25 and round it
up
to
two
| decimal places.
| AdjustedNewRate=Application.Worksheetfunction.Roun d(NewRate *
.25,
2)
|
| If $27.11 is the old rate, I would expect that $27.11 * 1.075 =
$29.14
| (rounded).
| And $29.14 * .25 = $7.29 (rounded).
|
| However, I am getting $7.28 in VBA.
|
| How do I get VBA to give me $7.29?
|
| TIA.
|
| --
| Ken Hudson