【发布时间】:2017-07-11 14:38:57
【问题描述】:
我有一个包含 18,806 行的列表(名为“Reference”的工作表),需要从 90,000 多行的 Excel 表(名为“To Delete”的工作表)中删除。我正在尝试创建一个包含“参考”中的行号的数组,遍历该数组,并从“删除”中删除数组中的每一行。到目前为止,我有:
Sub deleteRows()
Dim rowArray As Variant
ReDim rowArray(18085) As Integer
rowArray = Sheets("Reference").Range("A1:A18086").Value
Dim Arr As Variant
Dim del As Integer
Dim i As Integer
i = 1
For Each Arr In rowArray
del = Arr
Sheets("To Delete").Cells(del, 1).EntireRow.Clear
Next
End Sub
编辑:想通了!它只是清除内容并有一些内存溢出错误,但我正在解决这个问题。只是想在这里发布以供将来参考:)
【问题讨论】:
-
我想已经在delete a row in excel vba上回答了
-
你不会遇到一点小问题吗?假设我想删除第 2 行和第 4 行。我运行这个循环一次,它删除了第 2 行,但是现在,第 4 行向上移动到第 3 行。现在我在再次循环并删除当前行时删除原始第 5 行第 4 行。你考虑过这个吗?
-
@m.nachury 试过了——删除了一大堆我不想删除的行,所以我正在尝试编写自己的代码并收到此错误:(
-
@E.Trauger 是的,我意识到我一发布就将其改为清除。它们是大块的,所以我不介意删除空白空间,只需要在没有人为错误的情况下找到它们的位置
-
这仅在您的行列表按降序排列时有效,最高行号到最低行号。否则,如果你有
2,5,7,当第 2 行被删除时,第 5 行刚刚变成第 4 行,将被跳过,第 6 行将被删除。但是如果你这样做7,5,2,行顺序不会因为行被删除而改变。