十进制

时间:2015-09-07 15:38:35

标签: excel vba excel-vba

我试图计算小数位前后的数字。

例如1452.13之前将是4之前和之后将是2。

该值存储在一个字符串中我认为我可能需要使用len和find但是无法弄明白吗?

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:3)

有很多方法。例如here

这是一种在小数点后找到数字的快速技巧。

可以复制和修改它以查找小数点前的位置

params

上述两种情况都不依赖于你的十进制字符是"。"

答案 1 :(得分:3)

我也可以玩吗? :d

Num = 1452.13
Debug.Print Len(Split(Num, ".")(0)) '<~~ Length of number before decimal
Debug.Print Len(Split(Num, ".")(1)) '<~~ Length of number After decimal   

编辑:

我假设你只传递小数。但为了使它万无一失,你可以使用这个

Num = 1452

Debug.Print Len(Split(Num, ".")(0)) '<~~ Length of number before decimal

If InStr(1, Num, ".") Then Debug.Print Len(Split(Num, ".")(1)) _
Else Debug.Print 0 '<~~ Length of number After decimal

答案 2 :(得分:2)

使用excel公式,您最好使用以下(快速)公式

=LEN(INT(A1))  

=LEN(A1) - IF(INT(A1)-A1,1,0) - LEN(INT(A1))

答案 3 :(得分:1)

=LEN(LEFT(A1;LEN(A1)-FIND(".";A1))-1)
=LEN(RIGHT(A1;LEN(A1)-FIND(".";A1)))

也就是说,如果您的小数字符是一个点。

答案 4 :(得分:0)

如果您使用的是Microsoft Word:

Sub dot()

Dim Num As Variant
Num = 1452.13
MsgBox "You number: " & Num
MsgBox "Length of number before decimal: " & Len(Split(Num, ".")(0))
MsgBox "Length of number After decimal: " & Len(Split(Num, ".")(1))

End Sub

基于Siddharth Rout回答