VBA - 如何将单元格的值从文本转换为数字

时间:2017-06-29 13:46:01

标签: excel vba excel-vba format number-formatting

我必须使用导出的数字列,这些数据存储为文本。

enter image description here

我尝试使用此代码将这些数据转换为数字。

Sub FormatColumns()
 Columns(9).NumberFormat = "0"
 Columns(10).NumberFormat = "0"
End Sub

它已经正确地完成了工作(或者看起来如此),但我仍然无法使用数字处理这些数据,但Excel告诉我,它存储为数字。

enter image description here

但是当我通过公式=ISTEXT()验证时,它总是显示 TRUE

你可以帮帮我吗?我在Google上找到的所有教程和建议都是通过格式化单元格或=VALUE(),但VALUE功能对我不起作用,它会显示 #VALUE

提前谢谢!

6 个答案:

答案 0 :(得分:1)

另一种解决方案是:

Sub Macro1()

    Range("A:A").Select 'Range of values you need converted

    For Each Cell In Selection
    Cell.Value = (Cell.Value * 1)
    Next

End Sub

非vba等效解决方案是拥有" 1"在单元格中输入,复制该单元格,选择要转换为数字的范围,右键单击并按下“选择性粘贴” - >乘。

这会将该范围内的所有值保留为数字而不更改格式。用ISTEXT测试。

确保您的设置也与替换小数的逗号匹配,否则可能会继续出现问题。

答案 1 :(得分:1)

检查整个相关区域是否先设置为数字格式。

选择相关区域并全部替换无效("空格"至"留空")。然后,根据您的语言环境,尝试将,全局替换为.

接下来在备用单元格中输入1,复制该单元格,选择整个相关区域并选择Paste Special,Option,Multiply。

如果不起作用,请将.切换回,并重复选择性粘贴。

答案 2 :(得分:1)

它的逗号,需要.所以405,90 = 405.90

答案 3 :(得分:1)

你必须更换"," ~~> ""

longpaths

答案 4 :(得分:0)

通过宏

将存储为文本的数字转换为数字
Sub macro() 
    Range("F:F").Select 'specify the range which suits your purpose
    With Selection 
        Selection.NumberFormat = "General" 
        .Value = .Value 
    End With 
End Sub 

答案 5 :(得分:0)

Hilight你用“修复”并运行的数字:

Sub fixNumbers()
    With Selection
        .NumberFormat = "General"
        .Value = .Value
    End With
End Sub