我正在尝试开发一个全局宏,可以在将系统报告下载到Excel时格式化或破坏chr()的格式。有没有比我现有的方法更快的方法?我希望它避免循环遍历每个单元格,因为其中一些报告可能超过20列和超过25K行。
Sub test123()
Application.ScreenUpdating = False
Dim rng1 As Range
Set rng1 = Application.ActiveSheet.UsedRange
Dim r As Range
On Error Resume Next
For Each r In rng1
r.Value = Trim(Replace(r.Value, Chr(160), Chr(32)))
Next
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:2)
Sub Tester()
Dim t, cell As Range, rng As Range, arr
Dim nR As Long, nC As Long, r As Long, c As Long
Set rng = Range("A1").Resize(10000, 20)
'###### update cell-by-cell ######
t = Timer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual '<< big speedup here...
For Each cell In rng.Cells
cell.Value = Replace(Trim(cell.Value), Chr(160), Chr(32))
Next cell
Application.Calculation = xlCalculationAutomatic '<<...but don't forget to set back
Application.ScreenUpdating = True
Debug.Print Timer - t ' about 10sec
t = Timer
'###### read to array, update array, write to sheet ######
arr = rng.Value
nR = UBound(arr, 1)
nC = UBound(arr, 2)
For r = 1 To nR
For c = 1 To nC
arr(r, c) = Replace(Trim(arr(r, c)), Chr(160), Chr(32))
Next c
Next r
rng.Value = arr
Debug.Print Timer - t 'about 0.5 sec
End Sub