VBA 中具有多个条件的自动过滤器
我们将介绍如何使用 AutoFilter
在 VBA 中过滤一系列单元格或 Excel 表格。
VBA 中具有多个条件的自动过滤器
在许多情况下,我们需要在处理 VBA 代码时在 Excel 中使用过滤器。如果我们想获取特定日期的销售数据,我们需要在 VBA 中的日期列上使用日期过滤器。
VBA 使用 AutoFilter
为这个问题提供了解决方案。
我们将首先了解如何在范围内使用自动过滤器,以便用户可以过滤数据。首先,让我们有一些数据,如下所示。
如下所示,我们将使用工作表的 Range
方法来选择要应用 AutoFilter
的范围。
# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter
End Sub
输出:
我们必须指定范围的标题,在我们的例子中是 A1:C1
,并利用对象范围的 AutoFilter
技术来应用自动过滤器。如上所示,这将导致我们范围内的过滤器被激活。
在 VBA 中使用字段和条件进行自动过滤
VBA 还允许我们过滤具有特定值的特定字段。为此,我们必须定义要应用过滤器的字段。
我们还将定义我们想要应用过滤器的标准。如果我们希望仅过滤 Laptop
的第二列,我们可以运行如下所示的代码。
# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter Field:=2, Criteria1:="Laptop"
End Sub
输出:
正如我们从上面的示例中看到的那样,我们可以通过定义字段和条件的值来使用具有所需值的 AutoFilter
。上面显示了使用我们在 VBA 代码中提供的标准的过滤器的结果。
VBA 中具有多个条件的自动过滤器
假设我们想为我们的过滤器设置多个标准。在这种情况下,当我们需要过滤一个具有多个值的字段时,我们可以通过在 AutoFilter
中使用另一个参数运算符来做到这一点。
我们可以使用 xlFilterValues
运算符并将值传递给数组中的 Criteria
参数,以根据这些值进行过滤,如下所示。
# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter Field:=2, Criteria1:=Array("Laptop", "iPhone"), _
Operator:=xlFilterValues
End Sub
输出:
从上面的例子中我们可以看到,当我们运行代码时,AutoFilter
被激活了多个值并显示了我们想要的结果。
VBA 中具有多个条件的自动过滤日期范围
如果我们想根据日期范围使用 AutoFilter
,或者如果我们要获取特定日期范围之间的数据,我们必须使用带有 xlAnd
运算符的多个 Criteria
参数。
让我们通过一个示例,将更多数据添加到我们的示例表中,日期如下。
从上面的数据可以看出,我们添加了一个带有日期的新列。如下所示,我们将使用这些日期来过滤 5 月 20 日至 25 日之间的数据。
#VBA
Sub test()
Sheet1.Range("A1:D1").AutoFilter Field:=1, Criteria1:=">=05/20/2022", Operator:=xlAnd, Criteria2:="<=05/25/2022", Operator:=xlFilterValues
End Sub
输出:
正如我们从上面的示例中看到的,我们可以通过提供两个日期标准并使用带有 xlAnd
值的 Operator
参数来轻松过滤日期范围内的数据。
一些 Operator
参数及其描述如下所述。
xlAnd
运算符可以使用多个条件进行过滤,例如Criteria1
和Criteria2
。xlOr
运算符可以使用一个条件或另一个条件进行过滤。xlTop10Items
运算符将帮助我们从条件中过滤特定数量的最高排名值。xlBottom10Items
运算符将帮助我们从条件中过滤特定数量的最低排名值。xlTop10Percent
运算符将帮助我们从标准中过滤出排名最高值的特定百分比。xlBottom10Percent
运算符将帮助我们从标准中过滤出排名最低的值的特定百分比。xlFilterValues
运算符将帮助我们过滤具有多个值的条件。xlFilterCellColor
运算符将帮助我们根据单元格颜色过滤条件。xlFilterFontColor
运算符将帮助我们根据字体颜色过滤标准。xlFIlterIcon
运算符将帮助我们根据字体图标过滤条件。xlFilterDynamic
运算符将帮助我们过滤动态值。