Excel 对电子表格上的所有单元格应用修剪(替换…)
我正在尝试开发一个全局宏,它可以在将系统报告下载到excel时格式化或破坏chr()的格式。有没有一种方法能比我已有的更快地实现这一点?我希望它避免在每个单元格中循环,因为其中一些报告可以超过20列,超过25K行Excel 对电子表格上的所有单元格应用修剪(替换…),excel,vba,Excel,Vba,我正在尝试开发一个全局宏,它可以在将系统报告下载到excel时格式化或破坏chr()的格式。有没有一种方法能比我已有的更快地实现这一点?我希望它避免在每个单元格中循环,因为其中一些报告可以超过20列,超过25K行 Sub test123() Application.ScreenUpdating = False Dim rng1 As Range Set rng1 = Application.ActiveSheet.UsedRange Dim r As Range On Error Res
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
子测试仪()
Dim t、单元作为范围、rng作为范围、arr
尺寸nR为长,nC为长,r为长,c为长
设置rng=范围(“A1”)。调整大小(10000,20)
“######逐单元更新######
t=计时器
Application.ScreenUpdating=False
Application.Calculation=xlCalculationManual'谢谢Tim。我很抱歉没有立即回复。我以为我已经接受了答案。底部选项的绝佳解决方案。我以前从未用过“UBound”。我将阅读它以了解数组。
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