2015-09-07 43 views
1

我试图计算小数点前后的数字。Excel VBA计数小数前后的数字

例如1452.13之前,将4前后将是2

的值存储在一个字符串,我想我可能需要使用LEN与找到,但不能弄明白?

将不胜感激任何帮助。

+1

欢迎堆栈溢出!你有没有试图解决这个问题?如果你有,请编辑你的问题,包括你的代码和研究,以显示什么不适合你。如果你还没有,你应该先尝试自己解决它,然后在这里发布代码和研究。它让你的问题更容易让别人回答! – SuperBiasedMan

回答

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 
+3

'Len(Split(Num&“。”,“。”)(1))' – omegastripes

+0

对不起,我不明白你在说什么? –

+0

考虑'Num = 1452',添加点连接以使代码失效。 – omegastripes

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

也就是说,如果你的十进制字符是一个点。

+0

我有一个小数点分隔符,都返回2(对于A1中的1452.13) –

+0

= LEN(INT(A1))和= LEN(A1-INT(A1)) - 2可能更好。 –

2

有很多方法。例如here

这是一种相当快的技术,可以在小数点后找到数字。

可以复制和修改,找出小数点

Function CountDecimalPlaces(aNumber As Double) As Long 

    Dim len1 As Long, len2 As Long 
    len1 = Len(CStr(aNumber)) 
    len2 = Len(CStr(Int(aNumber))) 
    CountDecimalPlaces = len1 - len2 + CLng(len1 <> len2) 

End Function 


Function CountInteger(aNumber As Double) As Long 

    CountInteger = Len(CStr(Int(aNumber))) 

End Function 

无论是上述的前地方靠你十进制字符是“”

+0

++适用于多种解决方案! (我认为(减)** - **'CLng(len1 <> len2)'应该是** + **'CLng(len1 <> len2)') –

+0

我知道 - 非常聪明,但是当你在执行期间评估'CLng(len1 <> len2)'? (我得到一个-1) –

+1

哦,是的。改变了它。 – HarveyFrench

2

使用Excel公式你最好使用下面的(快)式

=LEN(INT(A1)) 

=LEN(A1) - IF(INT(A1)-A1,1,0) - LEN(INT(A1)) 
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溃败回答

+0

认为没有新的见解;如果你想让代码真的很安全(看看@ Siddharth-Rout的编辑),然后使用与通常的点定界符“。”不同的局部小数设置。 (在中欧使用的逗号,G。在德国或奥地利)。顺便说一下,这是VBA代码不仅适用于MS Word。 –

+0

你是对的@T.M。不同的是'Debug.Print'Siddrath没有提到结果在Imrmediate Window。如果一个初学者可能在观看结果时遇到问题。我想知道你的意见。 –

+1

您打算提供帮助,这很好,但我认为即使是初学者也可以看看MS帮助网站,如果他不知道“Debug.Print”的含义是什么的话。海事组织这个增加并没有真正与问题本身或迫切需要澄清:-) –