Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-如何将单元格值从文本转换为数字_Vba_Excel_Format_Number Formatting - Fatal编程技术网

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

VBA-如何将单元格值从文本转换为数字,vba,excel,format,number-formatting,Vba,Excel,Format,Number Formatting,我必须创建带有导出数字的列,这些数字存储为文本 我试着用这个代码把这些数据转换成数字 Sub FormatColumns() Columns(9).NumberFormat = "0" Columns(10).NumberFormat = "0" End Sub 它已经正确地完成了这项工作(或者看起来是这样),但是我仍然不能像处理数字一样处理这些数据,但是Excel告诉我,它是作为数字存储的 但当我通过公式=ISTEXT()验证它时,它总是显示为TRUE 你能帮我一下吗?我在谷歌上找到

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

我试着用这个代码把这些数据转换成数字

Sub FormatColumns()
 Columns(9).NumberFormat = "0"
 Columns(10).NumberFormat = "0"
End Sub
它已经正确地完成了这项工作(或者看起来是这样),但是我仍然不能像处理数字一样处理这些数据,但是Excel告诉我,它是作为数字存储的

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

你能帮我一下吗?我在谷歌上找到的所有教程和建议都是通过格式化单元格或
=VALUE()
,但VALUE function对我不起作用,它显示了我的价值


提前谢谢你

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

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

Hilight您要“修复”并运行的数字:

另一个解决办法是:

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
,复制该单元格,选择整个相关区域并粘贴特殊、选项、乘法


如果这不起作用,请将
切换回
并重复粘贴特殊操作。

这是逗号,需要是
,因此
405,90
=
405.90

必须替换“,”~>”


它是逗号,需要是
405,90
=
405.90
,不幸的是,这在这种情况下不起作用。空格和逗号必须是正确的。但非常感谢您的建议,因为它在其他情况下也有效。正如我在@Rick的帖子中所写,它在这个情况下不起作用。有空格和逗号,必须更正。但是非常感谢你的建议,因为它在其他情况下也有效。
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
Sub FormatColumns()
 With Columns("i:j")
    .Replace ",", "."
    .NumberFormat = "#,###.00"
 End With
End Sub