使用 VBA 在 Excel 中获取 autofiletred 行的行号

Get row number of autofiletred lines in Excel with VBA

我想获取自动筛选行的行号。

我使用了这个代码

With xlsWkSheet      
    With .Range("A1").CurrentRegion
        .AutoFilter Field:=4, Criteria1:="88684240"
        .AutoFilter Field:=19, Criteria1:="88684239"            
        Set xlsRangeAutoFilter = .SpecialCells(xlCellTypeVisible)
    End With
End With

但我不知道如何使用 xlsRangeAutoFilter 获取自动过滤(可见)行的行号

非常感谢您的帮助

您可以使用 WorksheetFunction.Subtotal method 来计算可见的行和其中包含数据的行数(注意可见的空白不会被计算在内):

NumberOfRows = Application.WorksheetFunction.Subtotal(3, xlsWkSheet.Range("A1:A" & xlsWkSheet.Range("A1").CurrentRegion.Rows.Count))

或者更可靠的方法:

xlsWkSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1

根据评论编辑:

要输出所有筛选的行号,您必须遍历这些区域。

    With .Range("A1").CurrentRegion
        Dim Area As Range
        For Each Area In .Columns(1).SpecialCells(xlCellTypeVisible).Cells.Rows.Areas
            Dim AreaRow As Range
            For Each AreaRow In Area.Rows

                Debug.Print AreaRow.Row 'output each row number in intermediate window

            Next AreaRow
        Next Area
    End With