在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
。 但我只想在StartRow
variables77343
和EndRow
variablesEndRow
。 怎么做?
您要求如何返回范围中第一行和最后一行的行号。 这是如何:
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
改编自这里