進階篩選:
3個基本要素要掌握:
1.資料區:資料各行要有標題,必須是RANGE物件的範圍。
2.條件區:條件各行要有標題,且必須是RANGE物件的範圍。
3.篩選結果原地顯示或複製到指定區域:原地顯示 xlFilterInPlace、 複製到指定區域xlFilterCopy,當設定為"複製到指定區域"時要多設定一個 CopyToRange的參數。
4.不選重複的值:這參數名稱為Unique ,進階篩選預設為false(不開啟),當開啟時(true),則會以"不選重複的記錄"完成進階篩選,筆者是以不開啟作執行,但是如果你篩選的條件內容是唯一值時,則我會打開,減少比對次數。
其他補充:增有網友留言,可以把條件或資料區放在不同的工作頁面中嗎? ANS:筆者用OFFICE 2010測試,如果你是選用"將篩 選結果複製到其他地方",那"資料範圍"與"複製到"的設定必續在同 一頁歐!!!!但條件區則無此限制。
物件設定使用小技巧:
使用 RANGE的End(xlUp).Row 屬性取的最後一列有使用的儲存格位置,這方法跟COUNTA比較後,好處是可以不管空白有無,取得最後一列有使用的儲存格;如同英文的意思是由下往上找第一格有被使用的儲存格,所以空白有無可以不管了。
A = Sheets("部品出貨").Range("A10000").End(xlUp).Row
透過SET 直接設定物件的儲存格範圍,這樣比較好操作。
Set myrange1 = Sheets("XXXXXX").Range("A1" & ":" & "AH" & a)
Set myRange2 = Sheets("XXXXXX").Range("ai1" & ":" & "Ak" & a)
使用完後記得作Set myrange1=nothing 作釋放。
VBA:
xlFilterInPlace:
myrange1.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=myRange2
xlFilterCopy:
myrange1.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=myRange2 , CopyToRange:=Sheets("XXXXXX").Range("AM1")
沒有留言:
張貼留言