8

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

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

Dim rng As Range

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

有没有更好(即更有效)的方法来做到这一点?

我玩过 NumberFormat ,但它似乎没有用。

在此先感谢(如果我已经在这里错过了解决方案,我深表歉意 - 我进行了搜索但没有找到)。

4

3 回答 3

11

电子表格

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

VBA

(相应地更改Sheet1,假设A100000为空):

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

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

使用这种方法,可以保留公式。


我希望这会有所帮助!

于 2013-08-22T09:37:28.277 回答
8

从这个网站http://www.access-programmers.co.uk/forums/showthread.php?t=219316 我得到了这个想法:

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

而且效果很好!

于 2014-04-04T07:53:32.020 回答
1

这更容易:

With Selection
    .NumberFormat = "0"
    .Value = .Value
End With
于 2015-04-16T09:26:00.723 回答