- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
2#
發表於 2014-12-1 10:45
| 只看該作者
本帖最後由 GBKEE 於 2014-12-1 10:51 編輯
回復 1# jj369963 - Option Explicit
- Sub Ex_字典物件()
- Dim d As Object, i As Integer, k As Variant, Sh As Worksheet
- Set d = CreateObject("scripting.dictionary") '字典物件
- i = 2
- With Sheet1
- Do While .Cells(i, "c") <> ""
- d(.Cells(i, "c") & "") = "" '字典物件的 key : class欄的值
- i = i + 1
- Loop
- For Each k In d '字典物件的 key
- .Range("a1").AutoFilter 3, k '自動篩選 第3欄的準則為 k
- On Error Resume Next
- Set Sh = Sheets(k) 'k工作表不存在會有錯誤
- If Err <> 0 Then
- Set Sh = Sheets.Add(, Sheets(1))
- Sh.Name = k
- Err.Clear
- On Error GoTo 0
- End If
- Sh.UsedRange.Clear
- .UsedRange.Copy Sh.Range("A1")
- Next
- .Activate
- .Range("a1").AutoFilter
- End With
- End Sub
- Sub Ex_進階篩選()
- Dim Rng As Range, Sh As Worksheet
- With Sheet1
- '進階篩選出class欄不重複的值
- .Range("C:C").AdvancedFilter xlFilterCopy, , Cells(1, .Columns.Count), True
-
- Set Rng = Cells(2, .Columns.Count)
- Do While Rng <> ""
- .Range("a1").AutoFilter 3, Rng '自動篩選 第3欄的準則為 Rng
- On Error Resume Next
- Set Sh = Sheets(Rng.Text) 'Rng.Text 工作表不存在會有錯誤
- If Err <> 0 Then
- Set Sh = Sheets.Add(, Sheets(1))
- Sh.Name = Rng.Text
- Err.Clear
- On Error GoTo 0
- End If
- Sh.UsedRange.Clear
- .UsedRange.Copy Sh.Range("A1")
- Set Rng = Rng.Offset(1)
- Loop
- .Activate
- .Range("a1").AutoFilter
- Rng.EntireColumn.Clear
- End With
- End Sub
複製代碼 |
|