2017-03-16 97 views
1

我有一個excel,其中有一些帶小數的值。 值爲字符串,並且由於許多國家正在使用它,因此有些國家使用「,」逗號作爲小數位,其他國家使用「。」。點爲小數位。根據區域設置,Excel小數點分隔符的行爲有所不同

一旦彙編了全球所有數據,來自不同地區的人們就會使用宏處理數據。

爲了讓人們使用相同的設置,我在宏他們decimalseparator改變是所有相同:

Application.UseSystemSeparators = False 
Application.DecimalSeparator = "," 
application.ThousandsSeparator = "." 

我然後運行某些宏添加值在一起,這是問題開始的地方。 對於歐洲的人來說,這個宏很完美。 宏第一轉換任何點,以這樣的逗號(請注意,電池值是一個字符串):

If InStr(NW.Cells(ttt, 100), ".") > 0 Then 
     x2 = Replace(NW.Cells(ttt, 100), ".", ",") 
     NW.Cells(ttt, 100) = x2 
End If 

所以如果NW.Cells(TTT,100)= 12.25它其轉換爲12,25則運行更多的宏(將所有值一起添加)。

但是,如果一個人在美國運行的宏,在12.25變爲1225

因爲我已經改變了application.decimalsepator爲「」在宏觀的開始,我不明白爲什麼宏的行爲不同...

任何想法如何解決這個問題?

注意Excel 2007和Excel 2010中被使用,因此不能使用= NUM​​BERVALUE功能...

感謝

+0

我認爲主要的問題是「該值是字符串」這是你應該開始解決你的問題。如果這些值是值,那麼切換本地化沒有問題。這些「字符串值」從哪裏來? –

+0

爲什麼不在VBA中實現'NUMBERVALUE'函數並使用它? –

+0

@Peh,值爲字符串的原因是因爲數據被保存在Mysql數據庫的背景上......在一個MYSQL字段中,我保存了各種excel單元格,所以有字符串和值組合在一起作爲字符串的組合... 然後,我將它從MySQL數據庫中檢索時轉換回值。 值和字符串輸入世界各地,所以他們來自不同的國家,一些使用逗號,一些使用點... – user1135218

回答

0
Sub changeSeparators() 
Dim myRange As Range 
Dim rng As Range 

Set myRng = ActiveSheet.Range("A1:A500") 

For Each rng In myRng 
    rng.Value = Replace(rng.Value, "'", ",") 
    If Left(Right(rng.Value, 3), 1) = "," Then 
     rng.Value = Mid(rng.Value, 1, Len(rng.Value) - 3) & "." & Right(rng.Value, 2) 
    End If 
Next rng 
End Sub 
+1

感謝您的分享。如果值有數千個分隔符,我也會測試你的代碼。到目前爲止情況並非如此,但將來可能會受到影響。 – user1135218

相關問題