如果行号包含在集合中,有一种删除行的方法?
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
目前我正在使用此代码从下往上删除行:
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