Thanks for sharing!
After a few hours of brain crunching, I finally figured out a fairly concise Excel function for rounding to a specific number of significant digits:
For more information about this function, you can see the write-up on my site. I also included a corresponding custom Excel VBA function.
Rounding Significant Figures in Excel
Pretty slick method.
Now next question. Can you make it so that if I enter two numbers that it will perform some indicated math and internally figure out the answer to the correct significant number of digits.
Now I realize that you may have to indicate if one number was an exact number. I ask because if you use multiple calls then it would be easy to create make formula to perform calculations for say a chemistry class that always have multiple steps but sig figs are extremely important.
It seems this doesn't work with some numbers. eg show 1 to 2sf should display 1.0, but shows 1 instead. Only get 1.0 if you format the no. of dps, which then prevents the correct sf appearing.
I didn't test this, but Steve Aprahamian did, and, as per usual, he got the finer detail that lesser mortals like me missed! Apart from that shortcoming, it works really well.
Nice work Jon.
The display isn't right... but the value seems to be fine.
Most will be content just having something to give correct values for computations.
Good point though Kiwi.
Sub All_Macros(Optional control As Variant)
Steve Aprahamian suggested using =TEXT(....,"0.000"), etc to get it looking right, then using =VALUE(cell...) to handle it as a number. Sounds ok, so long as we can make the correct no. of zeros appear in the TEXT formula. Make sense?
Thanks for the tip. I found a similar tip to use TEXT on this page.
I have since figured out a solution (albeit a very complicated one). The new formula is now posted on my site, but I've included it here also:
I just finished creating a corresponding VBA function, which I will post on my site soon. There was a problem in the function that was driving me crazy when the value was equal to 10, 100, 1000, etc.VB:=TEXT(TEXT(value,"."&REPT("0",sigfigs)&"E+000"), "0"&REPT(".",(sigfigs-(1+INT(LOG10(ABS(value)))))>0)& REPT("0",(sigfigs-(1+INT(LOG10(ABS(value)))))* ((sigfigs-(1+INT(LOG10(ABS(value)))))>0)))
It turns out that in most cases, you don't really need to use VALUE(cell), because Excel's smart enough to figure out that the string is numeric. However, I don't know how far I'd trust that.
You can also use +0 at the end of any formula that returns a number as text, or precede the formula with;
=-- as apposed to only =
There are currently 2 users browsing this thread. (0 members and 2 guests)