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