- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
4#
發表於 2012-6-17 11:05
| 只看該作者
回復 1# koala2099 - Option Explicit
- Sub Ex() '進階篩選 + 自動篩選
- Dim Rng As Range, xi As Integer
- Application.ScreenUpdating = False
- With ActiveSheet '作用中的工作表
- '使用 AdvancedFilter 進階篩選 篩選不重復的資料 取得有料的倉庫------------
- '參數 Action: =xlFilterCopy (複製在別的範圍)
- '參數 CriteriaRange (準則範圍) ':=.Cells(1, .Columns.Count - 1).Resize(2) 準則範圍。如果省略此引數則無準則。
- '準則範圍 的條件為空白為所有篩選的資料
- '參數 CopyToRange 選擇性的 Variant。如果 Action 為 xlFilterCopy,此引數指定被複製列的目標範圍。否則忽略此引數。
- '參數 Unique 選擇性的 Variant。若為 True,則僅篩選唯一的記錄;若為 False,則篩選出所有符合準則的記錄。預設值為 False。
- .Cells(1, .Columns.Count - 1) = "aaa" '
- .Range("B:B").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Cells(1, .Columns.Count - 1).Resize(2), _
- CopyToRange:=.Cells(1, .Columns.Count), Unique:=True
- '------------------------------------------------------------------
- Set Rng = .Columns(.Columns.Count).SpecialCells(xlCellTypeConstants) '倉庫別的範圍
- .AutoFilterMode = False '取消 這工作表的自動篩選
- For xi = 2 To Rng.Count '倉庫的迴圈
- .[A1].AutoFilter Field:=2, Criteria1:=Rng(xi) '自動篩選 第2欄 中 指定 倉庫
- .[A1].CurrentRegion.Copy '複製自動篩選到的資料
- With Workbooks.Add(1) '新開活頁簿 工作表1張
- .Sheets(1).Paste '第1張工作表 貼上資料
- .Sheets(1).Name = Rng(xi) '第1張工作表 命名:倉庫別
- .SaveAs ThisWorkbook.Path & "\" & Rng(xi) & ".xls" '新開活頁簿 存檔
- .Close '新開活頁簿 關閉
- End With
- Next
- .Cells(1, .Columns.Count - 1).Resize(, 2).EntireColumn.Clear '清除進階篩選的資料
- End With
- Application.ScreenUpdating = True
- End Sub
複製代碼 |
|