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

Posted

技术标签:

【中文标题】VBA - 如何将单元格的值从文本转换为数字【英文标题】:VBA - How to convert value of cell from text to number 【发布时间】:2017-06-29 13:46:01 【问题描述】:

我必须导出带有数字的列,这些数字存储为文本。

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

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

它已正确完成工作(或者看起来如此),但我仍然无法像处理数字一样处理这些数据,但 Excel 告诉我,它以数字形式存储。

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

请您帮帮我好吗?我在 Google 上找到的所有教程和建议都是通过格式化单元格或=VALUE(),但 VALUE 函数对我不起作用,它显示了我#VALUE

提前谢谢你!

【问题讨论】:

是逗号,必须是. 405,90 = 405.90 【参考方案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 测试。

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

【讨论】:

【参考方案2】:

你必须替换 "," ~~> "."

Sub FormatColumns()
 With Columns("i:j")
    .Replace ",", "."
    .NumberFormat = "#,###.00"
 End With
End Sub

【讨论】:

【参考方案3】:

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

选择相关区域并对 进行全局替换(“空格”为“留空”)。然后根据您的语言环境尝试将, 全局替换为.

接下来在备用单元格中输入1,复制该单元格,选择整个相关区域并选择性粘贴、选项、乘法。

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

通过宏将存储为文本的数字转换为数字

Sub macro() 
    Range("F:F").Select 'specify the range which suits your purpose
    With Selection 
        Selection.NumberFormat = "General" 
        .Value = .Value 
    End With 
End Sub 

【讨论】:

不幸的是,这在这种情况下不起作用。有空格和逗号,必须是正确的。但是非常感谢您的建议,因为它适用于其他情况。【参考方案6】:

突出显示您要“修复”并运行的数字:

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

【讨论】:

当我写信给@Rick 的帖子时,它在这种情况下不起作用。有空格和逗号,必须更正。但是非常感谢您的建议,因为它适用于其他情况。

以上是关于VBA - 如何将单元格的值从文本转换为数字的主要内容,如果未能解决你的问题,请参考以下文章

vba在单元格中生成的公式如何变成文本值

vba中如何将单元格内容强制转换为文本类型?

VBA用户定义的函数来复制单元格的值,文本形成和超链接?

VBA代码将值从一个单元格复制到特定列

如何使用 VBA 检测不适合 Excel 单元格的值?

如何将单元格的值从 TableView 获取到另一个视图