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

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