EXCEL高级筛选

高级筛选VBA代码

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Set KeyCells = Range("Q4:S5")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        '高级筛选
        Worksheets("明细账").Activate
        Sheets("登记表").Range("getData[[#Headers],[#Data]]").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range("Q3").CurrentRegion, CopyToRange:=Range("B4:N4"), Unique:=False
            
        '定位到最后一个非空单元格
        'ActiveCell.SpecialCells(xlLastCell).Select
        '自动筛选
        'Selection.AutoFilter
    End If
End Sub
图01

高级筛选的条件(Criteria)

条件 说明 示例
条件在同一行 条件之间为“与(并且)”的逻辑关系 如图01
条件在不同行 条件之间为“或(或者)”的逻辑关系
*字符* 筛选包含字符的值,允许使用通配符,但文本不加引号 ?付*
<>*字符* 筛选不包含字符的值,允许使用通配符,但文本不加引号 <>*银付*
<> 筛选非空值 <>
= 筛选空值 =
高级筛选条件

参考文章:
https://zhuanlan.zhihu.com/p/26647039

作者: Hugh

Welcome to Wan's world~