如果行号包含在集合中,有一种删除行的方法?

A way to delete rows if row number is contained in a set?

目前我正在使用此代码从下往上删除行:

Sub Deleterows()

With Sheet8


.Rows(9).EntireRow.Delete
.Rows(5).EntireRow.Delete
.Rows(1).EntireRow.Delete

End With

End Sub

我有很多行要删除。需要删除的行总是相同的。

我想知道是否有更好的方法来删除我的 50 个特定行而不用写 .Rows(x).EntireRow.Delete 50 次。

例如if row number in [9,5,1] then delete。这也更容易只添加一个行号而不重复一行。

这是数据摘录中的几行。请注意,它已被转置。

如您所述,您可以定义要删除的行索引范围:

Dim rows2delete As Variant 
Dim i As Integer

rows2delete = Array(9, 5, 1) 'descending order is obligatory!

For i = LBound(rows2delete) To UBound(rows2delete) 
    Sheet8.Rows(rows2delete(i)).EntireRow.Delete
Next

祝你好运!

详情请见:VBA - Array function

如果您需要所有时间相同的行,请使用下一个方法。它不使用任何迭代并将立即删除它们。您可以按任何顺序构建数组:

 Dim sh As Worksheet, delRange As Range, arr As Variant
 
 arr = Array(1, 7, 5, 3, 19) 'build here the rows to be deleted array
 Set sh = ActiveSheet
 Set delRange = sh.Range("A" & Join(arr, ",A"))
 delRange.EntireRow.Delete xlUp