Board logo

標題: [發問] 進階篩選 [打印本頁]

作者: fashionable3000    時間: 2015-8-26 19:27     標題: 進階篩選

[attach]21809[/attach]
Range("A2:A6").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B2:B3"), CopyToRange:=Range("C2:C2"), Unique:=False

vba用這條,裡面的結果都有我不要的,請問要如何修改才能完全相符?

也就是上面只找到A0020,下面只找到20。

用一般篩選是可以做到,可是速度有點緩慢,欣賞進階篩選的速度,但是這結果不太好。

題外話:常常第一次執行vba(xx.show),剛顯示出來就掛了,只要重開就能正常執行,請問可能的原因是?
作者: Hsieh    時間: 2015-8-26 22:49

回復 1# fashionable3000


    [attach]21810[/attach]
作者: fashionable3000    時間: 2015-8-26 23:18

您好,我的那條語法就是從那個視窗錄製的

不過那個視窗沒有"完全符合"或是"部分符合"這種選項

所以會找到比預期還多的資料。
作者: Scott090    時間: 2015-8-27 10:28

回復 3# fashionable3000


    在 B3 鍵入 ="=A0020"  使 儲存格 B3 顯示  =A0020

試試看
作者: fashionable3000    時間: 2015-8-27 12:19

回復 4# Scott090
[attach]21812[/attach]
結果好像還是一樣:(

或是可以問進階篩選的原理嗎?

Dim i%, j%
i = 3
j = 3
Do Until Range("a" & i) = ""
    If Range("a" & i) = Range("b" & 3) Then
    Range("c" & j) = Range("a" & i)
    j = j + 1
    End If
i = i + 1
Loop

雖然這樣也是可以達成,不過當10000筆以上,速度跟進階篩選完全不能比。
作者: Scott090    時間: 2015-8-27 15:43

回復 5# fashionable3000

  參考 4#,  請注意:儲存格 B3 要打入 ="=A0020"  ,格子內要看到 =A0020
不要只打入 ="A0020" 而看到 A0020 在格子裡面
[attach]21825[/attach]
  1. Sub test1()
  2.     Range("A2:A6").AdvancedFilter _
  3.     Action:=xlFilterCopy, _
  4.     criteriarange:=Range("B2:B3"), _
  5.     copytorange:=Range("C2:C6"), _
  6.     unique:=False
  7. End Sub

  8. Sub test2()
  9.     Range("A10:A14").AdvancedFilter _
  10.     Action:=xlFilterCopy, _
  11.     criteriarange:=Range("B10:B11"), _
  12.     copytorange:=Range("C10:C10"), _
  13.     unique:=False
  14. End Sub
複製代碼
一般 "準則" 橫向列 (Row)儲存格內放 "AND" ,縱向行(Column)儲存格內放 "Or";
可以使用 =, <,<=,>,>=, * ,
以下儲存格的準則 是  cells(18,"B") or cells(19,"B")
           A                    B                 C
17    ID                         ID                      ID
18    A0020               =A0020           A0020
19    A0020A       =*B                   A0020B
20    A0020B               
21    AA0020
  1. Sub test3()
  2.     Range("A17:A21").AdvancedFilter _
  3.     Action:=xlFilterCopy, _
  4.     CriteriaRange:=Range("B17:B19"), _
  5.     CopyToRange:=Range("C17"), _
  6.     Unique:=False
  7. End Sub
複製代碼

作者: fashionable3000    時間: 2015-8-28 08:34

回復 6# Scott090

謝謝指導,這樣我會了,感激不盡!!




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