gpt4 book ai didi

excel - VBa 条件删除循环不起作用

转载 作者:行者123 更新时间:2023-12-02 09:11:33 26 4
gpt4 key购买 nike

我正在电子表格上运行以下代码:

Do While i <= 100000
If Not Cells(i, 4) = "String" Then
Cells(i, 4).EntireRow.Delete
End If
i = i + 1
Loop

有很多条目不是“字符串”,但它们不会被删除。

当我将这段代码复制到单独的工作表时,我什至收到错误“Excel 无法使用可用资源完成此任务。选择较少的数据或关闭其他应用程序。”

我做错了什么导致这个循环不起作用?

注意:我无法使用自动筛选,因为我需要根据满足条件来删除行。

最佳答案

这是删除行的最糟糕的方法。原因

  1. 您正在删除循环中的行
  2. 您的单元格对象不合格

试试这个。

碰巧我也在MSDN论坛回答了类似的问题。请参阅THIS

尝试这种方式(未经测试)

在下面的代码中,我将最后一行硬编码为 100000 ,这与上面链接中的操作不同。

Sub Sample()
Dim ws As Worksheet
Dim i As Long
Dim delRange As Range

'~~> Set this to the relevant worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")

With ws
For i = 1 To 100000
If .Cells(i, 4).Value <> "String" Then
If delRange Is Nothing Then
Set delRange = .Rows(i)
Else
Set delRange = Union(delRange, .Rows(i))
End If
End If
Next i

If Not delRange Is Nothing Then delRange.Delete
End With
End Sub

注意:我假设单元格将具有类似的值

String
aaa
bbb
ccc
String

如果您遇到“字符串”可能存在不同大小写或位于其他字符串之间的情况,例如

String
aaa
STRING
ccc
dddStringddd

那么您将不得不采取稍微不同的方法,如该链接所示。

关于excel - VBa 条件删除循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19241905/

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