根据行号VBA删除整行

我有一个18806行(工作表名为“参考”)的列表,需要从90,000行excel表(工作表名为“要删除”)中删除。 我试图创build一个数组包含“参考”中的行号,遍历数组,并从“删除”删除数组中的每一行。 到目前为止我有:

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 

编辑:想通了! 它只是清除内容,并有一些内存溢出错误,但我正在解决这个问题。 只是想发布在这里供将来参考:)

基于我以前的评论,我提出了一个build议,不要改变你的行号:

 For Each a In rowArray del = rowArray(a) Worksheets.Rows(del).ClearContents Next a Dim rowNum as Integer rowNum = Worksheets.Rows.RowCount While rowNum > 0 If Worksheets.Cells(rowNum,1).Value = "" Then Worksheets.Rows(rowNum).Delete End If rowNum = rowNum - 1 Loop 

这是后处理的代码。 这应该是几乎到了可用的地步:

 Sub deleteRows() Dim rowArray(18086) As Integer Dim i As Integer, j As Integer, del As Integer, rowNum As Integer i = 1 j = 18086 While i <= j rowArray(i) = Sheets("Reference").Range(i, 1).Value i = i + 1 Loop For Each a In rowArray del = rowArray(a) Sheets("Reference").Rows(del).ClearContents Next a rowNum = Sheets("Reference").Rows.RowCount While rowNum > 0 If Sheets("Reference").Cells(rowNum, 1).Value = "" Then Sheets("Reference").Rows(rowNum).Delete End If rowNum = rowNum - 1 Loop End Sub 

为了安全起见,请确保在调用variables之前定义variables。 这是代码中的通用规则。

尝试这个:

 Worksheets.Rows(i).Delete 

用我作为你的行号。

铌:它会造成你的行号狗屎