gpt4 book ai didi

excel - 无限For...下一个循环: how do I fix it?

转载 作者:行者123 更新时间:2023-12-03 02:48:15 25 4
gpt4 key购买 nike

我正在尝试删除单元格值不等于数组 Ar() 中的值之一的所有行。当我输入逻辑运算符 NOT 时,由于某种原因循环会无限循环(Excel 卡住)。相反,如果我想从数组中删除包含值的行,它可以完美地工作。

问题上线:

如果不是 .Cells(i, 10).Value = Ar(j) 则

我的代码:

Sub Tims()
Dim LastRow As Long, LR As Long
Dim i As Long, j As Long
Dim t As Integer
Dim Ar() As String

Worksheets("Start").Activate
t = Count("a", Range("A3:A14"))
LR = Range("I3:I10").End(xlDown).Row
Worksheets("Master").Activate
Sheets("Master").Range("A100:A" & 100 + LR - 3).Value = Sheets("start").Range("I3:I" & LR).Value

With Worksheets("Master")
For j = 1 To LR - 2
ReDim Preserve Ar(j)
Ar(j) = Cells(99 + j, 1)
Next j
End With

With Worksheets("Master")
LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
End With

Worksheets("Master").Activate

For j = 1 To LR - 2
For i = 1 To LastRow
With Worksheets("Master")
If Not .Cells(i, 10).Value = Ar(j) Then
.Cells(i, 10).EntireRow.Delete
i = i - 1
End If
End With
Next i
Next j

End Sub

最佳答案

导致无限循环的行是这一行:

i = i - 1

摆脱它,并替换它

For i = 1 To LastRow

有了这个

For i = LastRow To 1 Step -1

我明白您为什么尝试 i = i - 1 以避免每次删除行时跳过一行。但这是行不通的:如果一行被删除,那么它会被表底部的一个空行替换,最终您会到达它。该空行显然不包含数组 Ar(j) 中的任何值,因此它被删除并被另一个空行替换,然后该空行被删除并被另一个空行替换,无限循环。

如果您在 Debug模式下单步执行代码,您可能会自己弄清楚这一点。

相反,只需使用Step -1从下往上迭代即可。

关于excel - 无限For...下一个循环: how do I fix it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23285954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com