在VBA中使用EXCEL Autofilterfunction时如何获得起始和结束的rownum

在VBA中使用excel自动过滤function时如何获取起始和结束的rownum。

我有一套500k +logging。 并在特定列上使用filter。 由于这个原因,filter的起始rownum可能会改变,因为其他logging被隐藏在自动filter中

所以使用自动filter,我可能以74562结束,并结束87000。

有人可以显示一个macros,它可以输出我使用的每个filter的startrow和endrow。

数据被sorting,所以任何filter将是一个固定的连续束

编辑:我已经意识到,下面的代码给出的结果,但在范围内

MsgBox ActiveSheet.Range("A2:A81000").Rows.SpecialCells(xlCellTypeVisible).Address 

它显示结果为$A$73351:$A$77343 。 但我只想在StartRowvariables77343EndRowvariablesEndRow 。 怎么做?

您要求如何返回范围中第一行和最后一行的行号。 这是如何:

 Dim r As Range Dim StartRow As Long Dim EndRow As Long Set r = ActiveSheet.Range("A2:A81000").Rows.SpecialCells(xlCellTypeVisible) ' r is now $A$73351:$A$77343 StartRow = r.Row ' returns 73351 EndRow = r.Row + r.Rows.Count - 1 ' returns 77343 
 dim rRange as Range Set rRange = Range("A1") Debug.Print rRange.Offset(1, 0).Row Debug.Print rRange.Offset(ActiveSheet.Rows.Count - 1, 0).End(xlUp).Row 

你可以试试这段代码:

 Sub Get_Filtered_Range() Dim oWS As Worksheet Dim oRng As Range Dim oColRng As Range Dim oInRng As Range oWS = ActiveSheet 'Trigger any autofilter if needed 'oWS.UsedRange.AutoFilter(Field:=2, Criteria1:="Test") oRng = oWS.Cells.SpecialCells(xlCellTypeVisible) oColRng = oWS.Range("A2:A"&ActiveSheet.Rows.Count) oInRng = Intersect(oRng, oColRng) 'display the values in the VBEditor Debug.Print("Filtered Range is " & oInRng.Address) Debug.Print("First Row Filtered Range is " & oInRng.Rows(1).Row) End Sub 

改编自这里