Board logo

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

作者: hugh0620    時間: 2010-12-8 18:32     標題: 進階篩選的問題

Dear 大大

      有一個小問題想請教大大們,就是我在使用"進階篩選"這個功能時,好像無法跨業執行
      例如在sheet2使用進階篩選後,在"複製到"這個部份選到sheet1確會失敗
      另外在使用vba撰寫時,也會有這樣的問題,程式碼如下  (無法執行)
  Sheet2.Select
   Sheet2.Range("C4").Select
   Sheet2.Range(Selection, Selection.End(xlToRight)).Select
   Sheet2.Range(Selection, Selection.End(xlDown)).Select
   Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet1.Range("A2"), Unique:=True
   Sheet1.Select
   Range("A4").Select

          是否有解決的方式呢???
作者: oobird    時間: 2010-12-8 20:02

Sheet2.Range("C4").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet1.Range("A2"), Unique:=True
執行進階篩選必須在目的工作表上執行,不是在資料源工作表上。用vba時注意不要select到源表。
作者: GBKEE    時間: 2010-12-9 08:09

本帖最後由 GBKEE 於 2010-12-9 08:12 編輯

回復 1# hugh0620
程式碼的問題可能是 "Selection"  
資料的進階篩選.AdvancedFilte,應指明資料的位置如:Sheet1.Range("A1:E10")
可以上傳檔案嗎? 是否如下圖的錯誤?




[attach]4000[/attach]
作者: hugh0620    時間: 2010-12-9 09:09

本帖最後由 hugh0620 於 2010-12-9 09:22 編輯

回復 3# GBKEE


    大大 我執行後的錯誤訊息如下圖

     [attach]4003[/attach]
     [attach]4002[/attach]
作者: oobird    時間: 2010-12-9 09:49

[attach]4005[/attach]
作者: GBKEE    時間: 2010-12-9 09:51

本帖最後由 GBKEE 於 2010-12-9 09:58 編輯

回復 4# hugh0620
Selection.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet1.Range("A2"), Unique:=True
這裡改為 A4 , A2 的值為1不是 資料的欄位所以會產生錯誤 但如A2 的值=""  程式會自動產生,資料的欄位 可試試看  
修改你的程式碼如下,是否是你的原意.
Private Sub CommandButton1_Click()
   Sheet2.Range("C4").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet1.Range("A1:A2"), CopyToRange:=Sheet1.Range("A4:H4"), Unique:=True
End Sub
PS: CriteriaRange:=Sheet1.Range("A1:A2"), 的儲存格可全部為空白 ,但不可有資料的欄位中夾雜有空白儲存格及不是資料的欄位
作者: hugh0620    時間: 2010-12-9 10:03

回復 5# oobird


    等級不夠~ 無法下載~ 我會努力衝的~ 好下載大大提供的檔案
作者: hugh0620    時間: 2010-12-9 10:10

回復 6# GBKEE


    大大~ 很感謝你這樣熱心的回覆~
    很抱歉  我沒有表達的很清楚
    希望透過Sheet1 A2這個欄位~當KEY WORD~ 去篩選出 sheet2 中資料符合sheet1這個欄位
   例: sheet1 A2 = 1
          就篩出 sheet2 資料中符合1 的資料

   這樣說明,希望大大能了解
作者: oobird    時間: 2010-12-9 10:12

[attach]4006[/attach]
作者: GBKEE    時間: 2010-12-9 11:02

回復 8# hugh0620
  1. Private Sub CommandButton1_Click()
  2.    Sheet2.Range("C4").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet1.Range("A1:A9"), CopyToRange:=Sheet1.Range("C5:j5"), Unique:=True
  3. End Sub
複製代碼
要用計算式準則,計算式準則的欄位名稱須不同於資料庫的欄位名稱
Sheet1.Range("A1:A9") 是準則的範圍 如圖:


[attach]4009[/attach]
作者: FAlonso    時間: 2010-12-11 14:19

我把樓主的code原裝填入模組再運用,啥事也沒有,程式邏輯是絕對正確的
感覺這個Error 1004是望天打卦,喜歡的時候便出現
還有就是那種select完又end又select的,最好用current region
"Excel VBA與資料庫整合大活用"一書有詳細解釋,這書很棒
作者: hugh0620    時間: 2010-12-14 10:27

回復 11# FAlonso


    謝謝提供我寶貴的意見~:D
作者: taihui    時間: 2011-1-1 15:18

回復 2# oobird


    只要在目的工作表執行進階篩選,就可以跨工作表執行
太感謝了.




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