Board logo

標題: [發問] 篩選的語法 [打印本頁]

作者: PJChen    時間: 2019-10-5 17:31     標題: 篩選的語法

請問大大:
篩選的語法我只會寫這樣的
,AutoFilter Field:=XX ...........
,但每次表格一有變動,就要再修改程式
請問還有沒有不同寫法?例如用變數或定義命名方式?寫法是怎樣的? 請教!!

    With Sh
    Sh.Activate
        .UsedRange.AutoFilter Field:=44, Criteria1:=">0", Operator:=xlAnd  '>0的資料
        Set A = .Range("F4", .Range("F4").End(xlDown))  '從..到資料最底
        A.Copy
    End With

    With xSh
        xSh.Activate
        Range("A5").Activate
        .Range("A5").PasteSpecial xlPasteValues  '選擇性貼上值
        Application.CutCopyMode = False '使來源的copy的虛線閃動停止
        Application.DisplayAlerts = False '在程序執行過程中使出現的警告框不顯示
    End With
作者: jcchiang    時間: 2019-11-29 10:15

回復 1# PJChen
可以用要篩選的欄位名稱找出位置,來取代固定的位置
Sub ex()
For Each a In Range("a1:M1")
    If a = "欄位名稱" Then Exit For
Next
  Selection.AutoFilter Field:=a.Column, Criteria1:=2
End Sub
作者: PJChen    時間: 2019-11-29 19:24

回復 2# jcchiang
感謝...我再試試看
作者: PJChen    時間: 2019-11-29 20:33

回復 2# jcchiang

大大,
語法測試OK
不過想請教,表格中若表頭的命名有很多重複的,在不更改名稱的情形下,要怎麼套用這個語法?
作者: jcchiang    時間: 2019-12-2 12:38

回復 4# PJChen
要篩選的欄位名稱重複,如可知道是用第幾個做篩選可加個計數

Sub ex()
x=0
For Each a In Range("a1:M1")
     If a = "欄位名稱" Then x=x+1
       If x = 第幾個名稱 Then Exit For
Next
   Selection.AutoFilter Field:=a.Column, Criteria1:=2
End Sub
作者: PJChen    時間: 2019-12-2 22:23

回復 5# jcchiang
感謝你教這個語法...我再試試




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)