返回有效数字数的函数

我不知道如何在excel上创build一个返回数字中有效数字的函数。 所以例如。 如果我input0.0001004,输出将是4。

我想你正在寻找:

=IF(AND(A1<1,A1>0),LEN(MID(A1,IF(ROUND(-LOG10(A1),0)=0,3,ROUND(-LOG10(A1),0)+2),99)),0) 

第一个IF检查input数字是否在0-1范围内, ROUND(-LOG10(A1),0)find零数, MID从非零数字到结尾(99), LEN检查长度。

在这里输入图像说明

这个小的UDF将在小数点显示单元格中显示的有效位数:

 Public Function Sig(r As Range) As Long If InStr(r.Text, ".") = 0 Then Sig = 0 Exit Function End If t = Split(r.Text, ".")(1) l = Len(t) For i = 1 To l If Left(t, 1) = "0" Then t = Mid(t, 2) Else Exit For End If Next i Sig = Len(t) End Function 

这显然取决于单元格的格式

这应该适用于任何数字。 由于pipe理信号的许多规则,这是相当复杂的。 如果要在小数点后面使用尾随零,只需将input单元格设置为文本格式即可。

 =IF(B3="","",IF(ABS(B3)=0,0,LEN((ABS(B3)/10^LEN(ABS(B3)))*10^(LEN(ABS(B3)/10^LEN(ABS(B3)))-LEN(INT(ABS(B3)/10^LEN(ABS(B3))))-1)))+LEN(B3)-LEN(ABS(B3))-IF(LEFT(B3,1)="-",1,0)+IF(OR(LEFT(B3,1)=".",LEFT(B3,2)="-."),1,0))+IF(AND(NOT(ISERROR(FIND(".",B3))),ISERROR(FIND(".",ABS(B3)))),-1,0) 

这个等式比绝对要求复杂一点,因为它能够处理文本input,在这种复杂因素中,例如0.123 vs .123,负数和尾随零(例如-.0900)。

在这里输入图像说明