HOWTO · VBA

VBA 中具有多个条件的自动过滤器

本教程演示了如何在 VBA 中使用具有多个条件的自动过滤器。

本页内容

我们将介绍如何使用 AutoFilter 在 VBA 中过滤一系列单元格或 Excel 表格。

VBA 中具有多个条件的自动过滤器

在许多情况下,我们需要在处理 VBA 代码时在 Excel 中使用过滤器。如果我们想获取特定日期的销售数据,我们需要在 VBA 中的日期列上使用日期过滤器。

VBA 使用 AutoFilter 为这个问题提供了解决方案。

我们将首先了解如何在范围内使用自动过滤器,以便用户可以过滤数据。首先,让我们有一些数据,如下所示。

在 VBA 中使用自动过滤器的示例数据

如下所示,我们将使用工作表的 Range 方法来选择要应用 AutoFilter 的范围。

# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter
End Sub

输出:

在 VBA 中的样本数据上激活自动过滤器

我们必须指定范围的标题,在我们的例子中是 A1:C1,并利用对象范围的 AutoFilter 技术来应用自动过滤器。如上所示,这将导致我们范围内的过滤器被激活。

在 VBA 中使用字段和条件进行自动过滤

VBA 还允许我们过滤具有特定值的特定字段。为此,我们必须定义要应用过滤器的字段。

我们还将定义我们想要应用过滤器的标准。如果我们希望仅过滤 Laptop 的第二列,我们可以运行如下所示的代码。

# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter Field:=2, Criteria1:="Laptop"
End Sub

输出:

在 VBA 中使用带有某些条件的自动过滤器

正如我们从上面的示例中看到的那样,我们可以通过定义字段和条件的值来使用具有所需值的 AutoFilter。上面显示了使用我们在 VBA 代码中提供的标准的过滤器的结果。

VBA 中具有多个条件的自动过滤器

假设我们想为我们的过滤器设置多个标准。在这种情况下,当我们需要过滤一个具有多个值的字段时,我们可以通过在 AutoFilter 中使用另一个参数运算符来做到这一点。

我们可以使用 xlFilterValues 运算符并将值传递给数组中的 Criteria 参数,以根据这些值进行过滤,如下所示。

# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter Field:=2, Criteria1:=Array("Laptop", "iPhone"), _
                                 Operator:=xlFilterValues
End Sub

输出:

自动过滤器在 VBA 中的样本数据上使用多个值激活

从上面的例子中我们可以看到,当我们运行代码时,AutoFilter 被激活了多个值并显示了我们想要的结果。

VBA 中具有多个条件的自动过滤日期范围

如果我们想根据日期范围使用 AutoFilter,或者如果我们要获取特定日期范围之间的数据,我们必须使用带有 xlAnd 运算符的多个 Criteria 参数。

让我们通过一个示例,将更多数据添加到我们的示例表中,日期如下。

在 VBA 中使用带有日期范围的自动过滤器的示例数据

从上面的数据可以看出,我们添加了一个带有日期的新列。如下所示,我们将使用这些日期来过滤 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

输出:

在 VBA 中使用样本数据的日期范围激活自动过滤器

正如我们从上面的示例中看到的,我们可以通过提供两个日期标准并使用带有 xlAnd 值的 Operator 参数来轻松过滤日期范围内的数据。

一些 Operator 参数及其描述如下所述。

  1. xlAnd 运算符可以使用多个条件进行过滤,例如 Criteria1 和 Criteria2。
  2. xlOr 运算符可以使用一个条件或另一个条件进行过滤。
  3. xlTop10Items 运算符将帮助我们从条件中过滤特定数量的最高排名值。
  4. xlBottom10Items 运算符将帮助我们从条件中过滤特定数量的最低排名值。
  5. xlTop10Percent 运算符将帮助我们从标准中过滤出排名最高值的特定百分比。
  6. xlBottom10Percent 运算符将帮助我们从标准中过滤出排名最低的值的特定百分比。
  7. xlFilterValues 运算符将帮助我们过滤具有多个值的条件。
  8. xlFilterCellColor 运算符将帮助我们根据单元格颜色过滤条件。
  9. xlFilterFontColor 运算符将帮助我们根据字体颜色过滤标准。
  10. xlFIlterIcon 运算符将帮助我们根据字体图标过滤条件。
  11. xlFilterDynamic 运算符将帮助我们过滤动态值。