close

取消篩選

Sub 取消篩選()

    Dim ws1 As Worksheet

    For Each ws1 In Worksheets

        ws1.AutoFilterMode = False

    Next

End Sub

 

簡單篩選

使用Range對象的AutoFilter方法,可對Range區域的數據中使用「自動篩選」篩選一個列表。該方法的語法如下:

表達式.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)

各參數的含義如下:

—    Field:相對於作為篩選基準字段(從列表左側開始,最左側的字段為第一個字段)的字段的整型偏移量。

—    Criteria1:篩選條件,為一個字符串。使用「=」可查找空字段,或者使用「<>」查找非空字段。如果省略該參數,則搜索條件為All。如果將Operator設置為xlTop10Items,則Criteria1指定數據項個數(例如,「10」)。

—    Operator:指定篩選類型,可用常量如表12-2所示。

表12-2  篩選類型

   

   

xlAnd

1

條件1和條件2的邏輯與

xlBottom10Items

4

顯示最低值項(條件1中指定的項數)

xlBottom10Percent

6

顯示最低值項(條件1中指定的百分數)

xlFilterCellColor

8

單元格顏色

xlFilterDynamic

11

動態篩選

xlFilterFontColor

9

字體顏色

xlFilterIcon

10

篩選圖標

xlFilterValues

7

篩選值

xlOr

2

條件1和條件2的邏輯或

xlTop10Items

3

顯示最高值項(條件1中指定的項數)

xlTop10Percent

5

顯示最高值項(條件1中指定的百分數)

—    Criteria2:第二個篩選條件(一個字符串)。與Criteria1和Operator一起組合成復合篩選條件。

—    VisibleDropDown:如果為True,則顯示篩選字段的自動篩選下拉箭頭。如果為False,則隱藏篩選字段的自動篩選下拉箭頭。默認值為True。

 

高級篩選

Excel的高級篩選可用VBA代碼來實現,使用Range對象的AdvancedFilter方法即可進行高級篩選。

高級篩選必須在工作表中定義一個條件區域,通過該條件從列表中篩選或複製數據。如果初始選定區域為單個單元格,則使用單元格的當前區域。AdvancedFilter方法的語法格式如下:

表達式.AdvancedFilter(Act ion, CriteriaRange, CopyToRange, Unique)

該方法各參數的含義如下:

—    Act ion:指定是否就地複製或篩選列表,可使用常量xlFilterCopy(將篩選出的數據複製到新位置)或xlFilterInPlace(保留數據不動)。

—    CriteriaRange:條件區域。如果省略該參數,則沒有條件限制。

—    CopyToRange:如果Act ion為xlFilterCopy,則該參數為複製行的目標區域。否則,忽略該參數。

—    Unique:如果為True,則只篩選唯一記錄。如果為False,則篩選符合條件的所有記錄。默認值為False。

Sub 高級篩選()

    Dim rng As Range, rng1 As Range

   

    Application.ScreenUpdating = False

    Application.Calculation = xlCalculationManual    '手動重算

   

    Set rng = Worksheets("Sheet1").Range("A19").CurrentRegion

    Set rng = rng.Offset(1, 0).Resize(rng.Rows.Count - 1, rng.Columns.Count)

   

    Set rng1 = Worksheets("Sheet1").Range("A1").CurrentRegion

    Set rng1=rng1.Offset(1,0).Resize(rng1.Rows.Count-1, rng1.Columns.Count)

   

    rng1.AdvancedFilter Act ion:=xlFilterInPlace, CriteriaRange:=rng

    Application.Calculation = xlCalculationAutomatic '自動重算

    Application.ScreenUpdating = True

End Sub

以上代碼首先獲取工作表中條件區域和篩選數據區域的引用,最後使用AdvancedFilter方法對數據區域進行篩選

對日期段做篩選

Private Sub vv()
Dim i As Date, j As Date
i = InputBox("請輸入 『開始』 查詢時間 輸入格式 如 2006/1/1")
j = InputBox("請輸入 『結束』 查詢時間 輸入格式 如 2006/1/1")
  Selection.AutoFilter Field:=5, Criteria1:="<" & j, Operator:=xlAnd, _
    Criteria2:=">" & i
End Sub

AutoFilter 方法

使用 [自動篩選] 篩選出一個清單。為 Variant。
 
附註   將 AutoFilter 屬性套用至 Worksheet 物件,以傳回 AutoFilter 物件。
 
expression.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)
expression      必選。該運算式會傳回 [套用於] 清單中的其中一個物件。
 
Field     選擇性的 Variant。相對於作為篩選基準欄位 (從清單左側開始,最左側的欄位為第一個欄位) 的位移。
 
Criteria1     選擇性的 Variant。篩選準則 (一個字串;例如,"101")。使用 "=" 可搜尋到空欄位,或者使用 "<>" 可搜尋到非空欄位。如果省略該引數,則搜尋準則為 All。如果 Operator 為 xlTop10Items,Criteria1 則指定項目個數 (例如,"10")。
 
Operator     選擇性的 XlAutoFilterOperator 資料類型。
 
XlAutoFilterOperator 可以是這些 XlAutoFilterOperator 常數之一。
xlAnd default
xlBottom10Items
xlBottom10Percent
xlOr
xlTop10Items
xlTop10Percent
可使用 xlAnd 和 xlOr 將 Criteria1 和 Criteria2 建構複合準則。
 
Criteria2     選擇性的 Variant。第二準則 (一個字串)。與 Criteria1 和 Operator 建構為複合的準則。
 
VisibleDropDown      選擇性的 Variant。若篩選欄位顯示 [自動篩選] 下拉箭頭,則為 True。若篩選欄位隱藏 [自動篩選] 下拉箭頭,則為 False。預設值為 True。
 
備註
如果您忽略所有的引數,此方法只會切換指定範圍中 [自動篩選] 下拉箭頭的顯示。
 
'本程序自動篩選顧客名稱為BOTTM, 人員代號為3的資料錄
Sub vbaAFilter()
Dim Rng As Range        '自動篩選結果範圍
Dim theRow As Range     '各區域的資料列
Dim theArea As Range        '各區域範圍
    With Sheets("Orders")       '在Orders工作表中
        Set Rng = .UsedRange    '所有資料範圍
        Rng.AutoFilter Field:=2, Criteria1:="BOTTM"     '篩選出顧客為BOTTOM者
        Rng.AutoFilter Field:=3, Criteria1:="3"         '再篩選出員工代號為3者
        '設定篩選結果範圍
        Set Rng = Rng.Resize(Rng.Rows.Count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible)
    End With
    '遍歷篩選結果範圍各AREA
    For Each theArea In Rng.Areas
        '遍歷各AREA的各列
        For Each theRow In theArea.Rows
            theRow.Select       '選定此列
            MsgBox theRow.Address       '顯示此列的位址
        Next
    Next
    Rng.AutoFilter          '解除自動篩選狀態
End Sub


arrow
arrow
    全站熱搜

    Chang 仁 發表在 痞客邦 留言(0) 人氣()