请不要选择此作为答案。
这篇文章只是为了向您展示一种比您实际使用的方法快得多的方法。从技术上讲,您正在遍历B2:AI40
. 即您的代码循环了 1326 次(=34 Cols * 39 Rows
)
这是一个更快的方法,只使用 17 个循环
逻辑:
- < 10 且 > 5 (也就是说 6,7,8,9 被 1 代替)
- < 5 和 > -5 (也就是说 -4,-3,-2,-1,0,1,2,3,4 被 0 代替)
- < -5 和 > -10 (也就是说 -6,-7,-8,-9 被 -1 代替)
现在,我们将使用.Replace
搜索上述数字而不是循环任何单元格,因此从技术上讲,与 1326 相比,我们只会循环 17 次!
请参阅此示例代码
Option Explicit
Sub replace()
Dim ws As Worksheet
Dim rng As Range
Dim i As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("B2:AI40")
With rng
For i = 6 To 9 '<~~ 4 loops
.replace What:=i, Replacement:="1", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next i
For i = -4 To 4 '<~~ 9 loops ; 7 if when i = 1 or 0 it doesn't do anyting
If i <> 1 And i <> 0 Then
.replace What:=i, Replacement:="0", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
Next i
For i = -9 To -6 '<~~ 4 loops
.replace What:=i, Replacement:="-1", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next i
End With
End Sub