gpt4 book ai didi

excel - Excel VBA中的for循环仅删除每第二行

转载 作者:行者123 更新时间:2023-12-04 21:11:59 24 4
gpt4 key购买 nike

我以为我已经在这里的答案的帮助下解决了这个问题,但我仍然只删除需要删除的每一行。循环是:

For Each row In ActiveSheet.UsedRange.Rows
'test for v in cell f and delete if there isn't one
str = Cells(row.row, "F").Value
Debug.Print "str is " & str
If InStr(1, str, "V") <> 0 Then
Debug.Print "hello str is " & str
Else
row.Delete Shift:=xlUp
End If
Next row

但是当我在以下行上运行它时:
M 1301
M 1302
M 1401
ES 1501
M 1501
M 1502
MV 1502
M 1503
MV 1503

我最终得到:
M1301   PMH
M1401 Rod Washer
M1502 Rod Washer
MV1502 Rod Washer
MV1503 Rod Washer

我觉得我快疯了。我在循环中也有一个递增计数器,并认为这是问题所在,但即使我已经停止使用计数器来引用行,我仍然有它。

任何帮助指出我认为显而易见的事情将不胜感激。

谢谢

最佳答案

因为你删除了一行row.Delete Shift:=xlUp例如第 4 行,当您删除该行时,第 5 行现在变为第 4 行,然后您转到下一行(第 5 行是旧的第 6 行)。

你可以把 Row = Row - 1在您删除之后,或者您可以采用不同的方式进行操作,即倒退。

例子

For X = range("A" & rows.count).end(xlup).row to 2 step - 1
'Do something per row
'Delete a row if need be
Next

这应该给你足够的想法来解决这个问题。

关于excel - Excel VBA中的for循环仅删除每第二行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45973888/

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