Excel 对电子表格上的所有单元格应用修剪(替换…)

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

我正在尝试开发一个全局宏,它可以在将系统报告下载到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
子测试仪()
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