如何在应用过滤器后选择第一个可见行

时间:2015-09-30 11:22:21

标签: excel vba filter

我在Excel中过滤了一个表,但我只想要出现的第一行。

3 个答案:

答案 0 :(得分:2)

在过滤范围内使用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,因为它只计算可见单元格。这是一种简单的非破坏性方法,用于确定在应用过滤器后是否有任何要引用的单元格。

答案 1 :(得分:1)

protocol MyClassDelegate: class {
    func foo(_ str: String)
}

class MyClass {

    weak var delegate: MyClassDelegate?

    func foo() {
        delegate?.foo("working")
    }

    let button: UIButton = {
        button.addTarget(self, action: #selector(foo), for: .touchUpInside)
        return button
    }()
}

class MyViewController { ... }

extension MyViewController: MyClassDelegate {
    func foo(_ str: String) {
        print(str)
    }
}

答案 2 :(得分:0)

我尝试了一下,对我来说效果很好。做到的第一段代码。谢谢!

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