繁体   English   中英

多个工作表筛选器,基于列 header 名称

[英]Multiple worksheet filter, based on column header name

我想根据下拉列表中的值进行过滤。 代码应根据列 header 名称查找该值,而不管每个工作表中 header 列的 position 是什么。

可用的解决方案假设每个工作表具有相同的布局,而我的则没有。 唯一不变的是我的列标题在同一行(第 4 行)。 header 列的名称也保持不变,尽管有些包含比其他工作表更多或更少的标题。

该代码是一个通用的自动过滤器,但假定列是相似的,并且要过滤的每一列都位于每个工作表上的相同位置。

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    On Error Resume Next
    If Not Intersect(Range("A2"), Target) Is Nothing Then
        Application.EnableEvents = False
        If Range("A2").Value = "" Then
            Worksheets("Sheet2").ShowAllData
        Else
            Worksheets("Sheet2").Range("A2").AutoFilter 1, Range("A2").Value
        End If
        Application.EnableEvents = True
    End If
End Sub

如果我理解正确,您基本上需要该列的动态引用。 在你的Else语句之后使用这样的东西:

lastCol = Worksheets("Sheet2").Cells(4, 1).End(xlToRight).Column

Set headerRange = Range(Worksheets("Sheet2").Cells(4, 1), Worksheets("Sheet2").Cells(4, lastCol)) 'range with all headers 

headerName = "your header" 'change to cell ref

matchCol = Application.Match(headerName, headerRange, 0) 'match for your header

Worksheets("Sheet2").Range("A4").AutoFilter matchCol, Range("A2").Value

我假设您的标题从 A4 开始。 这也是Worksheets("Sheet2").Range("A4").AutoFilter (不是A2)中需要引用的单元格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM