2015-09-07 72 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」的含義是什麼的話。海事組織這個增加並沒有真正與問題本身或迫切需要澄清:-) –