使用 VBA 自动筛选多个列,值来自不同的 sheet

Using VBA to autofilter Multiple columns, with values from different sheet

我想使用 VBA 按 2 列过滤转储-sheet,标准来自同一工作簿中不同 sheet 的值。

使用的代码是:

Sub FilterOnCellValue()

With Sheets("Dump")
    .Range("A1:Z10000").AutoFilter Field:=9, Criteria1:=Sheets("ControlPlanning").Range("C1").Value, Field:=23, Criteria1:=Sheets("ControlPlanning").Range("C4").Value
End With

End Sub

出于某种原因,此代码仅过滤一列,而它应该根据 2 个不同的值过滤编号为 9 和 23 的列。 由于我想从中吸取教训,解释一下我在VBA这篇文章中的思维错误。 Excel 版本是 2013,如果这有什么不同的话。

尝试将语法分成两行:

Sub FilterOnCellValue()

With Sheets("Dump").Range("A1:Z10000")
    .AutoFilter Field:=9, Criteria1:=Sheets("ControlPlanning").Range("C1").Value
    .AutoFilter Field:=23, Criteria1:=Sheets("ControlPlanning").Range("C4").Value
End With

End Sub

使用高级过滤器对多列使用“AND”和“OR”条件。

例如,如果您需要过滤“columnName1”> 10 或“columnName2”< 10 AND“columnName3”=“是”

  1. 我会创建另一个作品sheet,其中将包含过滤条件

  2. 在过滤器中 sheet 在一行中输入所有列名。

  3. 示例:如果第 1 行有 headers,则第 2 行应包含“AND”条件的值,第 3 行应包含“OR”条件的值。

  4. 第 2 行的“columname1”值应为“>10”,第 3 行的“columname2”值应为“<10”,第 2 行的“columname3”值应为“是” “

  5. 在您的宏中使用类似下面代码的高级过滤器,根据需要更改过滤器 sheet 名称和范围。

    'Select Sheet 和需要过滤的单元格 范围(单元格(2, 1), ActiveCell.SpecialCells(xlLastCell)).Select

    含Select离子 .AdvancedFilter 操作:=xlFilterInPlace,CriteriaRange:= _ Sheets("filter").Range("A1:D3"), Unique:=False

    结束于