使用VBA将特定范围的列从文本转换为数字格式

时间:2013-08-22 08:16:14

标签: excel-vba vba excel

我每周都会收到一份电子表格,由于我无法控制的各种原因,一些列会以文本形式存储为数字而不是数字。我需要将它们转换为数字,以便稍后在代码中与它们发生的事情。

我现在通过这样做将它们转换为数字:

Dim rng As Range

For Each rng In Range("A:D").Columns
   rng.TextToColumns
Next rng

有更好的(即更有效)的方式吗?

我玩过NumberFormat并且它似乎没有用。

提前致谢(如果我已经错过了解决方案,我会道歉 - 我进行了搜索并且没有找到它。)

3 个答案:

答案 0 :(得分:10)

<强> Excel中

  • 复制空单元格
  • 选择您需要更改格式的范围
  • 选择PasteSpecial,然后在Operation下选择Add

VBA

(更改Sheet1因此,假设A100000为空):

Sheet1.Range("A100000").Copy
Sheet1.UsedRange.PasteSpecial , xlPasteSpecialOperationAdd

如果将上述内容放入Workbook_Open事件,则每次打开工作簿时都会自动执行转换。

使用此方法,公式将被保留。


我希望有所帮助!

答案 1 :(得分:8)

来自这个网站http://www.access-programmers.co.uk/forums/showthread.php?t=219316 我有这个想法:

Range("D1:D400") = Range("D1:D400").Value

它完美无缺!

答案 2 :(得分:1)

这更容易:

With Selection
    .NumberFormat = "0"
    .Value = .Value
End With