使用VBA存储自动筛选行号

如何使用VBA存储和检索从AutoFilter操作返回的行号 ? 例如,我从这个问题 (见下面的代码)中使用了@brettdj代码来删除B列下所有具有“X”的行。现在我需要用X存储行号(B4,B6,B9 – 请参见下面的屏幕截图)因为我需要删除同一工作簿中其他工作表上相同的行。

在AutoFilter之前在AutoFilter之后

Sub QuickCull() Dim ws As Worksheet Dim rng1 As Range Set ws = Sheets("Sheet1") Set rng1 = ws.Range(ws.[b2], ws.Cells(Rows.Count, "B").End(xlUp)) Application.ScreenUpdating = False With ActiveSheet .AutoFilterMode = False rng1.AutoFilter Field:=1, Criteria1:="X" rng1.Offset(1, 0).EntireRow.Delete .AutoFilterMode = False End With Application.ScreenUpdating = True End Sub 

使用的代码是可能的填充行号符合一定的标准没有循环的数组? 您可以快速返回这些行,而无需使用AutoFilter

例如,这段代码将返回在B2:B50000findX的一系列行

 Sub GetEm() Dim StrRng As String StrRng = Join(Filter(Application.Transpose(Application.Evaluate("=IF(B2:B50000=""X"",""B""&ROW(B2:B50000),""X"")")), "X", False), ",") If Len(StrRng) > 0 Then MsgBox Range(StrRng).EntireRow.Address & " could be deleted elsewhere" End Sub