[英]VBA: Condense worksheet (multiple cols) to 2 columns based on header name and column value
[英]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.