将文本列转换为大文件的数字

时间:2012-04-26 17:02:29

标签: excel vba optimization excel-vba type-conversion

我有一个从C#自动生成的大型Excel工作表,它将所有列输出为文本(由于技术原因,这不能更改)。我在编写一个将数字列转换为数字的宏时遇到问题,并且快速执行(该表包含80列和20,000行)。

我已经尝试迭代所有单元格并调用

If IsNumeric(cell.Value) Then cell.Value = CDec(cell.Value)

这非常慢并且还有一个额外的问题,我有一个特殊情况,其中以“0xxx”之类的东西开头的字符串需要保存为字符串。如果我使用IsNumeric然后转换为CDec,我会失去前导0!

是否有一些简单的技巧可以说如果一个列中的一个值是一个字符串,那么不要处理该列,否则将它们转换为数字EXCEPT,以便我们有一个前导0?

1 个答案:

答案 0 :(得分:0)

将值存储在内存中并进行检查吗?与下面的代码类似的东西,但您必须对其进行优化并将condition_is_true替换为有意义的内容。我会使用函数返回一个布尔值。

Dim input_var As String

For r = 1 To 20000
    For c = 1 To 80
        input_var = Sheet1.Cells(r, c).value
        'do some stuff to the string

        If condition_is_true Then
            Sheet1.Cells(r, c).value = CDec(input_var)
        Else
            Sheet1.Cells(r, c).value = input_var
        End If
    Next c
Next r
相关问题