|
bbwsj 发表于 2014-2-4 21:38
你的表不会有65536行吧,弱弱的说,你的表真有数据达到10000多行了,就不适合用EXCEL了,改用数据库吧
...
用这个代码,逐列计算、转换即可:- Sub test1()
- Dim i&, j&, m&, tms#
- tms = Timer
- For j = 1 To 240 '遍历A to IF 共240列
- m = Cells(1, j).End(xlDown).Row '该列数据最大行数m (要求数据连续)
- arr = Cells(1, j).Resize(m) '该列数据读入数组arr
- For i = 1 To m
- arr(i, 1) = Chr(64 + arr(i, 1)) '把数值转换为英文字符
- Next
- Cells(1, j).Resize(m) = arr '输出结果到工作表对应列
- Next
- MsgBox Format(Timer - tms, "0.000s")
- End Sub
复制代码 试了一下你的置换法,实际要多好几倍,不合算。
Sub test2()
Dim i&, j&, m&, tms#
tms = Timer
For j = 1 To 240 '遍历A to IF 共240列
m = Cells(1, j).End(xlDown).Row '该列数据最大行数m (要求数据连续)
For i = 1 To 5
Cells(1, j).Resize(m).Replace What:=i, Replacement:=Chr(64 + i) '对该列数据进行置换
Next
Next
MsgBox Format(Timer - tms, "0.000s")
End Sub
Sub test3()
Dim i&, j&, m&, tms#
tms = Timer
m = Cells(1, 1).End(xlDown).Row '该列数据最大行数m (要求数据连续)
For i = 1 To 5
Cells(1, 1).Resize(m, 240).Replace What:=i, Replacement:=Chr(64 + i) '对整个区域进行直接置换
Next
MsgBox Format(Timer - tms, "0.000s")
End Sub
这个代码尤其危险……可能会直接死机(我只测试了5列)
|
|