【问题标题】:How to select the first visible row after applying a filter应用过滤器后如何选择第一个可见行
【发布时间】:2015-09-30 11:22:21
【问题描述】:

我正在筛选 Excel 中的表格,但我只想要出现的第一行。

【问题讨论】:

  • 你的过滤语句现在是什么样子的?
  • 来吧,我只是不显示,因为它在我的工作中,我不能在这里显示,只是工作表中的一个过滤器,有些行被抑制了,我想取出现的第一行
  • “加油”是怎么回事?如果您为过滤器提供您的 vba,那么回答者可以为您提供有关如何修改 vba 以执行您想要的操作的具体建议。

标签: excel vba filter


【解决方案1】:

在过滤范围上使用 Range.SpecialCells methodxlCellTypeVisible 参数。 .Rows(1).Cells 应该是你想要的。

Sub first_row()
    Dim rFirstFilteredRow As Range
    With Worksheets("Sheet1")
        With .Cells(1, 1).CurrentRegion
            'do all the .autofilter stuff here
            With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
                If CBool(Application.Subtotal(103, .Cells)) Then
                    Set rFirstFilteredRow = _
                      .SpecialCells(xlCellTypeVisible).Rows(1).Cells
                    '~~> rFirstFilteredRow is not a copy of the first visible row
                    'do something with rFirstFilteredRow
                End If
            End With
        End With
    End With
End Sub

您必须将其转录为适合您自己的AutoFilter Method 实现。


使用原生工作表SUBTOTAL function,因为它只计算可见单元格。这是在应用过滤器后确定是否有任何要引用的单元格的简单非破坏性方法。

【讨论】:

    【解决方案2】:
    Worksheets("Raw").AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(Row, Column)
    

    【讨论】:

    • 这对我有用..受上面代码的启发。 frow_main = Worksheets(main_sheet_name).AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells().Row
    【解决方案3】:

    我试过了,对我来说效果很好。第一段代码。谢谢!

    frow_main = Worksheets(main_sheet_name).AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells().Row 
    

    我试图在自动筛选后找到第一行,但其他偏移代码一直给我第 1 行。

    我需要第 27 行,但不能保证每次都是第 27 行。

    你的灵感奏效了!

    'Reset LastRow
    LastRow = Range("A" & Rows.Count).End(xlUp).Row
    
    'Remove the "Bear" invoice method
    ActiveSheet.Range("$A$1:$E$" & LastRow).AutoFilter Field:=5, Criteria1:="=BEAR", Operator:=xlOr, Criteria2:="=#REF!"
    FirstRow = Worksheets("testOriginalData").AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells().Row
    Rows(FirstRow).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.ShowAllData
    Range("A2").Select
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 2017-08-21
      相关资源
      最近更新 更多