Addendum: on the website
http://www.vertex42.com/ExcelTips/significant-figures.html
I found this User defined function
Function ROUNDSF(num As Variant, sigs As Variant) As String
Dim exponent As Integer
Dim decplace As Integer
Dim fmt_left As String
Dim fmt_right As String
Dim numround As Double
If IsNumeric(num) And IsNumeric(sigs) Then
If sigs < 1 Then
' Return the " #NUM " error
ROUNDSF = CVErr(xlErrNum)
Else
If num = 0 Then
exponent = 0
Else
'Round is needed to fix a ?truncation?
'problem when num = 10, 100, 1000, etc.
exponent = Round(Int(Log(Abs(num)) / Log(10)), 1)
End If
decplace = (sigs - (1 + exponent))
numround = WorksheetFunction.text(num, "." & _
String(sigs, "0") & "E+000")
If decplace > 0 Then
fmt_right = String(decplace, "0")
fmt_left = "0."
Else
fmt_right = ""
fmt_left = "0"
End If
ROUNDSF = WorksheetFunction.text(numround, _
fmt_left & fmt_right)
End If
Else
' Return the " #N/A " error
ROUNDSF = CVErr(xlErrNA)
End If
End Function