Vba 将大型文件的文本列转换为数字
我有一个由C自动生成的大型Excel表格,它将所有列输出为文本,由于技术原因,无法更改。我在编写一个宏时遇到了问题,该宏会将数字列转换为数字,并且速度很快。该工作表包含80列和20000行 我试着遍历所有单元格并调用Vba 将大型文件的文本列转换为数字,vba,optimization,excel,type-conversion,Vba,Optimization,Excel,Type Conversion,我有一个由C自动生成的大型Excel表格,它将所有列输出为文本,由于技术原因,无法更改。我在编写一个宏时遇到了问题,该宏会将数字列转换为数字,并且速度很快。该工作表包含80列和20000行 我试着遍历所有单元格并调用 If IsNumeric(cell.Value) Then cell.Value = CDec(cell.Value) 这是非常缓慢的,还有一个额外的问题,我有一个特殊情况,以0xxx开头的字符串需要保留为字符串。如果我使用IsNumeric,然后转换为CDec,我将丢失前导0
If IsNumeric(cell.Value) Then cell.Value = CDec(cell.Value)
这是非常缓慢的,还有一个额外的问题,我有一个特殊情况,以0xxx开头的字符串需要保留为字符串。如果我使用IsNumeric,然后转换为CDec,我将丢失前导0
是否有一些简单的技巧可以说,检测列中的一个值是否为字符串,然后不要处理该列,否则将其转换为数字,除非我们有一个前导0?是否将该值存储在内存中并进行检查?类似于下面的代码,但您必须对其进行细化,并替换条件“为真”以获得有意义的结果。我将使用一个函数返回布尔值
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