【发布时间】:2020-10-15 09:44:33
【问题描述】:
此宏在 col B 中搜索“检查”数字 (IsNumeric),找到后将数字偏移 (0,2),然后将原始单元格中的数字替换为“检查”。
当使用lastrow 作为规则时,它的运行速度非常慢(尽管如果我将范围设为一整列,即“B:B”,也会同样慢)。
这两种不同方法之间的唯一区别是lastrow 规则将“检查”添加到最后一行,一直到工作表的最后一行。我整天都在黑客攻击,通常这样的事情不会让我陷入困境(双关语)。
Sub Move_Checks()
Dim ws1 As Worksheet
Set ws1 = Sheets("Combined")
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).row
Dim rng1 As Range
Set rng1 = Range("B:B")
Dim Cell As Range
Set Cell = Range("B2" & lastrow)
For Each Cell In rng1
If IsNumeric(Cell.value) = True Then
Cell.Offset(0, 3) = Cell.value
End If
Next Cell
For Each Cell In rng1
If IsNumeric(Cell.value) = True Then
Cell.value = "Check"
End If
Next Cell
End Sub
【问题讨论】:
-
非常不清楚为什么在这里需要两个循环。此外,您仍在循环 B 列中的 每个单元格。它应该是
Set rng1 = Range("B2:B" & lastRow)。
标签: excel vba performance loops