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

时间:2017-08-06 18:29:01

标签: excel vba excel-vba

我意识到这是一个重复的问题,但this问题中提到的解决方案并不适合我。

我目前的代码如下

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。

在将NumberFormat设置为数字或一般后,我尝试使用C.value = c.value,但这对我没有任何作用

更新:问题似乎在于分隔符。我必须使用“,”作为小数分隔符,这会导致子故障。如果我将小数点分隔符交换为“。”该子运行正常。

3 个答案:

答案 0 :(得分:2)

你可以change the separators through VBA

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

答案 1 :(得分:2)

只需使用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 根据您的区域设置自动将字符串转换为数字:

UPDATE @Table_B 
SET col_1 = a.col_1
FROM (SELECT SUM(col_1) AS col_1 FROM @Table_A WHERE a.[id] = @id) a
WHERE [id] = @id

答案 2 :(得分:1)

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

404 Page Not Found
The page you requested was not found.
folder