2017-06-29 25 views
-1

我必须将导出数字的列存储为文本。VBA - 如何将单元格的值从文本转换为数字

enter image description here

我想这些数据转换为数字与此代码。

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

它正确地完成任务(或者看起来如此),但我仍然无法与这些数据与数字的工作,但Excel中告诉我,它被存储为数字。

enter image description here

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

你能不能帮我一下吧,好吗?所有教程和建议,我已经在谷歌发现通过格式化细胞或=VALUE(),但对我来说VALUE温控功能不工作,它让我#VALUE

预先感谢您!

+1

它的逗号,必须''.' = 405,90''405.90' –

+0

哦daamn,什么是假的我。谢谢! – Srpic

+0

你似乎没有阅读[这]( https://stackoverflow.com/help/tagging)。 – pnuts

回答

1

则必须更换 “” ~~>”。“

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

太好了,谢谢! – Srpic

+0

@Srpic:谢谢! –

+0

@Srpic这适用于空间? (你写*有空格和逗号,必须是正确的。*) – pnuts

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 
+0

不幸的是,在这种情况下这不起作用。有空格和逗号,必须是正确的。但非常感谢您的建议,因为它在其他例如 – Srpic

0

HILIGHT转换存储为文本的数字号码,你的数字与 “修复”,然后运行:

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

当我写给@ Rick的帖子时,它在这种情况下不起作用,有空格和逗号,需要更正,但是非常感谢您的建议,因为它在其他情况下有效 – Srpic

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”,复制该单元格,选择要转换的范围编辑到数字,右键单击并按Paste Special - > Multiply。

这将使该范围内的号码的所有值都不会更改格式。经过ISTEXT测试。

确保您的设置也匹配用逗号代替小数否则可能继续有问题。

+0

嗯,聪明的解决方案,凡不需要VBA的,谢谢! – Srpic

1

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

选择相关区域和做的白白(“空间”,以“留空”)全局替换。然后根据您的区域设置尝试全局替换,.

下一个备用单元格中输入1,复制单元格,选择整个相关区域和粘贴,选项,乘。

如果不行开关.,和重复粘贴。

1

它的逗号,必须.所以405,90 = 405.90

相关问题