- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 1# JH8888 - Option Explicit
- Sub Ex()
- Dim Rng As Range, S As String, xi As Integer
- Application.DisplayAlerts = False ' Microsoft Excel 顯示特定的警告和訊息則為 True。讀/寫 Boolean
- Application.ScreenUpdating = False '如果螢幕更新功能是開啟的則為 True。讀/寫 Boolean。
- With Sheets("Sheet1")
- For xi = Sheets.Count To 1 Step -1
- If Sheets(xi).Name <> .Name Then Sheets(xi).Delete '刪除 原有檔案 須由後往前刪
- Next
- If .AutoFilterMode Then .AutoFilterMode = False '取消篩選
- .Range("a1").AutoFilter '[自動篩選] 篩選出一個清單
- Set Rng = .AutoFilter.Range.Columns(1).Cells '[自動篩選]的第1欄
- For xi = 2 To Rng.Count '處裡: 第1欄
- If InStr(S, "," & Rng(xi) & ",") = False Then '檢查 是否已出現過
- .Range("a1").AutoFilter Field:=1, Criteria1:=Rng(xi) '沒出現: 指定為篩選值
- S = S & "," & Rng(xi) & "," '加入已出現過的字串中
- Sheets.Add , Sheets(Sheets.Count) '新增一工作表
- ActiveSheet.Name = Rng(xi) '命名:篩選值
- .UsedRange.SpecialCells(xlCellTypeVisible).Copy ActiveSheet.[a1] '複製: 資料表中篩選出的資料 ->新工作表的[A1]
- ActiveSheet.Cells.Columns.AutoFit 'AutoFit: 將範圍中的欄寬和列高調整為最適當的值。
- End If
- Next
- .AutoFilterMode = False '取消篩選
- .Activate '回到 資料表
- End With
- Application.ScreenUpdating = True
- Application.DisplayAlerts = True
- End Sub
複製代碼 |
|