返回有效数字数的函数
我不知道如何在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)。