【发布时间】:2015-05-31 01:00:54
【问题描述】:
我的以下代码运行速度非常慢。关于如何更快的任何想法?
一些背景,在以前的 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
【问题讨论】:
-
您可以做的一件事是将最高频率的匹配放在首位。如果 Roomate 出现频率最高,则它应该是匹配的第一个测试。与第二次、第三次等最频繁的比赛相同。更改为
Select Case ... End Select也可能会提高效率。