答案1
编辑 - 我意识到您说您可能正在处理数百个条件。我最初的答案只对少数几个条件有效。我已更新下面的代码,但图像可能仍引用旧的 VBA。
您可以使用 VBA 模块执行此操作,然后创建一个按钮,单击该按钮将根据您在某些单元格中输入的值进行过滤。如果尚未显示开发人员选项卡,则需要将其显示在功能区中。请参阅此处了解如何显示它。
首先,确定哪些单元格将用于保存筛选条件。在第一张图片中,这些单元格位于 F3-F5 中。这很好,但是筛选范围时,这些单元格可能会被隐藏。为了演示,我将范围放在筛选时不会消失的区域。
接下来,按 Alt+F11 打开 VBA 编辑器,然后从此处的下拉菜单中选择“新模块”进行创建:
在出现的新模块窗口中,输入以下代码(已编辑 - 我意识到您可能要处理数百个标准):
Sub MultiSelectFilter()
Dim v As Variant
v = Split(Join(Application.Transpose(Range("A11:A13"))))
Worksheets("Sheet3").Select
Range("A1").AutoFilter
Range("A1").AutoFilter Field:=1, Criteria1:=v, Operator:=xlFilterValues
End Sub
工作原理如下:首先,我们告诉 Excel A11:A13 是我们要查找的数字。这就是 Dim v As Variant 行的作用。
然后我们告诉 Excel 这些值是什么。在我的例子中,是 A11 到 A13。您可以根据需要添加或减去任意数量的搜索条件。
接下来我们告诉 excel 我们要过滤的范围。首先选择工作表,然后告诉它要过滤的范围(在本例中,A1 是我们要过滤的列)。然后我们告诉 AutoFilter 函数要查找什么值Range("A1").AutoFilter Field:=1, Criteria1:=v, Operator:=xlFilterValues
。
现在,当您输入值时,您可以从“宏”下的开发人员选项卡运行 MultiSelectFilter 宏
并过滤范围:
为了更进一步,并使其更加用户友好,您可以将宏分配给按钮。在开发人员选项卡上的“插入”部分下添加一个按钮,然后选择 MultiSelectFilter 宏。
如果您是 VBA 新手,这是一个非常适合入门的项目!希望对您有所帮助。