2014-07-02 628 views
-2

在我的Excel中,有不同類型的小數位數,小數位數也不同。通過Excel VBA計算小數位數

例如, 112.33, 112.356, 145.1, 25.01, 27.001

我需要知道其中有2位小數,如細胞的數量 - 25.01 - 這應該是其中之一。 我需要這個代碼用於Excel VBA

+0

請發表你寫試圖做到這一點的任何代碼。在這裏尋求幫助,提出一個好問題http://stackoverflow.com/help/how-to-ask – jordanhill123

+0

這可以很容易地用或不用VBA來完成。簡單的IF,LEN,RIGHT,FIND命令將完成這項工作。你有什麼嘗試,你卡在哪裏。本網站不是爲您製作代碼,或做您的家庭作業。 microsoft.com/en-us/excel-help/find-findb-functions-HP010342526.aspx http://office.microsoft.com/en-us/excel-help/if-HP005209118.aspx http:// office。 microsoft.com/en-us/excel-help/len-lenb-functions-HP010342650.aspx –

+0

類似於:http://stackoverflow.com/questions/14601967/which-excel-vba-regex-expression-should-i - 使用對數 - 十進制地方 – jordanhill123

回答

3

您可以使用VBA技術作爲顯示在下面的例子:

Dim digit As Integer 
Dim num As Double 
num = 123.456 
digit = Len(CStr(num)) - InStr(CStr(num), ".") 

其中digit是小數位的數量。

相關的第一個樣品:

digit = Len(CStr(112.33)) - InStr(CStr(112.33), ".") 

RGDS,

0

Alex的答案可以延長,其中小數字符(句號或逗號)是未知的情況下。如果數字是從Excel工作表中獲取的,並且區域設置未知,則可能會出現這種情況。另一個擴展是處理(整數)缺少小數的數字。

Dim iDigits As Integer 
Dim vNumber As Variant 

vNumber = Excel.Application.ActiveCell.value 

If VBA.IsNumeric(vNumber) And Not VBA.IsEmpty(vNumber) Then 
    iDigits = Len(vNumber) - Len(VBA.Fix(vNumber)) 

    ' correct for decimal character if iDigits > 0 
    iDigits = IIf(iDigits > 0, iDigits - 1, 0) 
Else 
    iDigits = 0 
End If 
0
Function GetNumberDecimalPlaces(theCell As Range) As Integer 

Dim periodPlace as integer, stringLength as integer 

periodPlace = InStr(1, theCell.Text, ".") 

If periodPlace = 0 Then 
    GetNumberDecimalPlaces = 0 
Else 
    stringLength = Len(theCell.Text) 

    GetNumberDecimalPlaces = stringLength - periodPlace 
End If 

End Function