对电子表格中的所有单元格应用修剪(替换...)

时间:2014-10-23 21:16:56

标签: excel-vba vba excel

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

1 个答案:

答案 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
相关问题