
=ROUND(number,digits-(1+INT(LOG10(ABS(number)))))
If you need to round a number to a given (variable) number of specified digits or figures, you can do so with an elegant formula that uses the ROUND and LOG10 functions.
In the example shown, the formula in D6 is as follows:
=ROUND(B6,C6-(1+INT(LOG10(ABS(B6)))))
This can be an intimidating formula if you don't have a good background in math, but let's work through it step-by-step.
First, when you have a formula like this where one function (in this case ROUND) wraps around all others, it's often helpful to work from the outside in. So, at the core, this formula is rounding the value in B6 using the ROUND function:
=ROUND(B6,x)
Where x is the number of significant digits required. The tricky part of this formula is calculate x. This is a variable, because it will change depending on the number being rounded. x is calculated with this bit:
C6-(1+INT(LOG10(ABS(B6))))
This seems complicated, so let's look first at how the formula needs to work for the given examples. Remember with ROUND that a negative number of digits works on the left side of the decimal. So, to round 1234567 to an increasing number of significant digits, we would have:
=ROUND(1234567,-6) = 1000000 // 1 sig. digit=ROUND(1234567,-5) = 1200000 // 2 sig. digits=ROUND(1234567,-4) = 1230000 // 3 sig. digits=ROUND(1234567,-3) = 1235000 // 4 sig. digits
So, the main problem is how to calculate -6, -5, -4 and so on depending on the number we are rounding.
The key is understanding how these numbers could be expressed using exponents, as in scientific notation:
=ROUND(1234567,-6) = 1000000 = 1.0*10^6=ROUND(1234567,-5) = 1200000 = 1.2*10^6=ROUND(1234567,-4) = 1230000 = 1.23*10^6=ROUND(1234567,-3) = 1235000 = 1.235*10^6
Note that the exponent is 6 in all cases, which is determined with this bit:
INT(LOG10(ABS(B6)))
So, the rest of the formula is just using the calculated exponent value to figure out the right number to give ROUND depending on the number of significant digits desired:
=ROUND(1234567,-6) // 1-(1+6) = -6=ROUND(1234567,-5) // 2-(1+6) = -5=ROUND(1234567,-4) // 3-(1+6) = -4=ROUND(1234567,-3) // 4-(1+6) = -3
So, in summary:

=ROUND(number,digits-(1+INT(LOG10(ABS(number)))))
If you need to round a number to a given (variable) number of specified digits or figures, you can do so with an elegant formula that uses the ROUND and LOG10 functions.
In the example shown, the formula in D6 is as follows:
=ROUND(B6,C6-(1+INT(LOG10(ABS(B6)))))
This can be an intimidating formula if you don't have a good background in math, but let's work through it step-by-step.
First, when you have a formula like this where one function (in this case ROUND) wraps around all others, it's often helpful to work from the outside in. So, at the core, this formula is rounding the value in B6 using the ROUND function:
=ROUND(B6,x)
Where x is the number of significant digits required. The tricky part of this formula is calculate x. This is a variable, because it will change depending on the number being rounded. x is calculated with this bit:
C6-(1+INT(LOG10(ABS(B6))))
This seems complicated, so let's look first at how the formula needs to work for the given examples. Remember with ROUND that a negative number of digits works on the left side of the decimal. So, to round 1234567 to an increasing number of significant digits, we would have:
=ROUND(1234567,-6) = 1000000 // 1 sig. digit=ROUND(1234567,-5) = 1200000 // 2 sig. digits=ROUND(1234567,-4) = 1230000 // 3 sig. digits=ROUND(1234567,-3) = 1235000 // 4 sig. digits
So, the main problem is how to calculate -6, -5, -4 and so on depending on the number we are rounding.
The key is understanding how these numbers could be expressed using exponents, as in scientific notation:
=ROUND(1234567,-6) = 1000000 = 1.0*10^6=ROUND(1234567,-5) = 1200000 = 1.2*10^6=ROUND(1234567,-4) = 1230000 = 1.23*10^6=ROUND(1234567,-3) = 1235000 = 1.235*10^6
Note that the exponent is 6 in all cases, which is determined with this bit:
INT(LOG10(ABS(B6)))
So, the rest of the formula is just using the calculated exponent value to figure out the right number to give ROUND depending on the number of significant digits desired:
=ROUND(1234567,-6) // 1-(1+6) = -6=ROUND(1234567,-5) // 2-(1+6) = -5=ROUND(1234567,-4) // 3-(1+6) = -4=ROUND(1234567,-3) // 4-(1+6) = -3
So, in summary: