在避免循环的范围内更改值,以提高速度

Change values within a range avoiding loops, for speed

我得到以下运行速度非常慢的代码。关于如何加快速度的任何想法?

一些背景,在之前的 Sub 中,我取了一个范围,然后复制并粘贴了它。现在我需要根据代码更改值。是否可以采用这个范围并对其进行修改而不先粘贴它?

Sub ChangeArea()
    Dim Book As Workbook
    Dim Sheet As Worksheet
    Dim AreaRange As Range
    Dim LastRow
    Dim c As Range
    Set Book = Workbooks("Testing")
    Set Sheet = Book.Worksheets("Data")
    Sheet.Activate
    LastRow = Sheet.Cells(Rows.Count, "AG").End(xlUp).Row
    Set AreaRange = Sheet.Range("AG5:AG" & LastRow)
    For Each c In AreaRange.Cells
        If c.Value = "10" Then
            c.Value = "Mark"
        ElseIf c.Value = "will" Then
            c.Value = "William"
        ElseIf c.Value = "Uncle" Then
            c.Value = "Bill"
        ElseIf c.Value = "Roomate" Then
            c.Value = "Robert"
        Else: End If
    Next
End Sub

一个选项可能是在您的范围内使用 Replace 方法。请参阅下文并尝试将其纳入您的工作表。

Sub ChangeThem()
    Dim rng As Range
    Dim lRow As Long

    lRow = Sheet1.Cells(Rows.Count, "AG").End(xlUp).Row
    Set rng = Sheet1.Range("AG5:AG" & lRow)

    rng.Replace what:=1, replacement:="One"
    rng.Replace what:=2, replacement:="Two"
    rng.Replace what:=3, replacement:="Three"
End Sub

尝试添加

Application.ScreenUpdating = false

到顶部

Application.ScreenUpdating = True

到底

这样可以防止每次更改时更新屏幕。