Significant Figures Function

  • Re: Significant Figures Function


    Jon,


    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.



    =sigFig(strArith,num1,num2)


    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.



    Regards,
    Barry

  • Re: Significant Figures Function


    Hi Jon


    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.
    Cheers
    Stephen

  • Re: Significant Figures Function


    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.

    [SIZE="1"]Sub All_Macros(Optional control As Variant)[/SIZE]

  • Re: Significant Figures


    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?
    KiwiSteve

  • Re: Significant Figures Function


    KiwiSteve,


    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:


    Code
    =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)))


    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.


    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.


    Enjoy,
    Jon

  • Re: Significant Figures


    To fix the cell showing 1.0 instead of just 1:


    Conditionally format your cells so that when =len(a1)=1 changes your formatting to Number w/ 1 decimal point (or however many sig figs you want)

  • Re: Significant Figures Function


    This is a great solution for significant figures using Excel formulas, however there are a few numbers that do "break" it. Here they are:


    99.95 - 99.999999999999999
    9.995 - 9.999999999999999
    0.9995 - 0.999999999999999
    0.09995 - 0.099999999999999
    etc., etc. all the way down until we reach Excel's limit for storing decimal places.
    and finally, Zero. Zero results in a #NUM error due to the LOG10 function.


    One solution is to manually add an exception for each of these cases using if statements.
    Other than that, this is a pretty bulletproof formula and I see no issue with using the VALUE function to perform additional calculations on these sig'd numbers.


    Cheers!

  • Re: Significant Figures Function


    In the above post, 99.95 - 99.999999999999999 represents a range of numbers. It should be read as "every possible number Excel can store between and including 99.95 to 99.999999999999999". Or if you'd prefer it in an Excel formula format: =AND(value>=99.95,value<=99.999999999999999)


    Dont forget the negatives: =AND(value>=-99.999999999999999,value<=-99.95)


    Cheers!

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!