是否可以在自动过滤器语法中指定动态范围?

时间:2018-02-21 18:28:25

标签: excel vba autofilter

我写了下面的代码来应用自动过滤器。代码工作正常。但是我已经指定了静态范围,在这里:*Range("A1", **"M"** & lastRow).AutoFilter*。 有没有办法用sheet2中的最后一个现有列号替换"M"。 我已经计算了上一个现有列*myCol = rngFound.Column - 1*。但不知道如何使用它。 请帮忙!!!

我的代码:

Sub testfilter1()
Dim lastRow As Long
Dim myCol As Long
Dim rngFound As Range

ThisWorkbook.Sheets("sheet2").Activate

 lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

        Set rngFound = ActiveSheet.Rows(1).Find(What:="", LookIn:=xlValues, LookAt:=xlWhole, _
            SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)

            myCol = rngFound.Column - 1 ' this will give last used column

Rows("1:1").Select
Selection.AutoFilter
ActiveSheet.Range("A1", "M" & lastRow).AutoFilter Field:=4, Criteria1:="*somename*"

End Sub

1 个答案:

答案 0 :(得分:4)

您可以在Cells()中使用Range()

...Range(Cells(1,1),Cells(lastRow,myCol))...

Cells(1,1)是单元格A1。格式为Cells([row],[column])

编辑:刚刚意识到你也可以使用Range("A1",Cells(lastRow,myCol))。就个人而言,如果我使用Cells(),我会在Range()的两个地方都这样做,但这样的个人偏好以及其他方式对您也有效。