|
楼主 |
发表于 2023-3-8 19:52
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
非常感谢,去掉定义数据类型后,确实就解决了这个问题。然后又优化了对于类似99.99,取三位有效数字后位100.0的问题。但是总感觉我的这个函数太过冗长,而且处理的数据范围仅仅是0.00001-9999999之间的数字,有没有更简便的写法呢,而且还能处理任意大小的数据。
Function yxsz(sz)
If sz >= 1000000 And sz <= 9999999 Then
yxsz = Round(sz / 10000, 0) * 10000
ElseIf sz >= 100000 And sz <= 999999 Then
yxsz = Round(sz / 1000, 0) * 1000
ElseIf sz >= 10000 Then
yxsz = Round(sz / 100, 0) * 100
ElseIf sz >= 1000 Then
yxsz = Round(sz / 10, 0) * 10
ElseIf sz >= 100 Then
yxsz = Round(sz / 1, 0) * 1
ElseIf sz >= 10 Then
If Round(sz, 1) = 100 Then
yxsz = 100
Else
yxsz = Format(Round(sz, 1), "0.0")
End If
ElseIf sz >= 1 Then
If Round(sz, 2) = 10 Then
yxsz = Format(Round(sz, 2), "0.0")
Else
yxsz = Format(Round(sz, 2), "0.00")
End If
ElseIf sz >= 0.1 Then
If Round(sz, 3) = 1 Then
yxsz = Format(Round(sz, 3), "0.00")
Else
yxsz = Format(Round(sz, 3), "0.000")
End If
ElseIf sz >= 0.01 Then
If Round(sz, 4) = 0.1 Then
yxsz = Format(Round(sz, 4), "0.000")
Else
yxsz = Format(Round(sz, 4), "0.0000")
End If
ElseIf sz >= 0.001 Then
If Round(sz, 5) = 0.01 Then
yxsz = Format(Round(sz, 5), "0.0000")
Else
yxsz = Format(Round(sz, 5), "0.00000")
End If
ElseIf sz >= 0.0001 Then
If Round(sz, 6) = 0.001 Then
yxsz = Format(Round(sz, 6), "0.00000")
Else
yxsz = Format(Round(sz, 6), "0.000000")
End If
ElseIf sz >= 0.00001 Then
If Round(sz, 7) = 0.0001 Then
yxsz = Format(Round(sz, 7), "0.000000")
Else
yxsz = Format(Round(sz, 7), "0.0000000")
End If
Else
yxsz = sz
End If
End Function
|
|