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 運算子將幫助我們過濾動態值。