使用 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
我想获取自动筛选行的行号。
我使用了这个代码
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