将存储为文本的数字转换为数字 – 小数

我意识到这是一个重复的问题,但在这个问题中提到的解决scheme完全不适合我。

我目前的代码如下

Sub ConvertTextToNumber() Dim Area As Range, C As Range Set Area = Sheets("Tank 3").Range("C7:L7,B8:B17,C20:L20,B21:B69") For Each C In Area If WorksheetFunction.IsNumber(Celle) = False And C <> "" Then C.NumberFormat = "0.0" C.Value = C.Value + 0 End If Next C End Sub 

这对整数工作正常,但是当存储为文本的数字是一个十进制数字(如0,1或0,2)时,它只是将数字分别转换为1或2。

我已经尝试使用C.value = c.value将NumberFormat设置为数字或一般,但是这对我没有任何帮助

更新:似乎问题在于分隔符。 我必须使用“,”作为小数分隔符,这使得子故障。 如果我将小数点分隔符换成“。” 子运行良好。

只需使用Range.FormulaLocal根据您的区域设置自动将string转换为数字:

 Sub ConvertTextToNumber() Dim Area As Range, C As Range Set Area = Sheets("Tank 3").Range("C7:L7,B8:B17,C20:L20,B21:B69") For Each C In Area C.FormulaLocal = C.Value Next End Sub 

你可以使用一个小窍门,那就是将所有数字作为文本导入到你的代码中,然后操纵它并将其吐出。 逗号混淆了英文转换,并将2,0看作20。无论如何,这里是如何做到这一点

 Sub ConvertTextToNumber() Dim Area As Range, C As Range Dim InNumAsStr As String Set Area = Sheets("all").Range("A1:B10") For Each C In Area InNumAsStr = C.Text '*** force the value to be a string type *** '***swap out any commas with decimal points *** InNumAsStr = Replace(InNumAsStr, ",", ".") C.NumberFormat = "0.0" C.Value = InNumAsStr Next C End Sub 

您可以通过VBA更改分隔符 :

 Sub ChangeSeparator() Application.DecimalSeparator = "." Application.ThousandsSeparator = "," Application.UseSystemSeparators = False ConvertTextToNumber Application.UseSystemSeparators = True End Sub