- 帖子
- 129
- 主題
- 25
- 精華
- 0
- 積分
- 159
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- office2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2011-12-24
- 最後登錄
- 2022-12-12
|
- Private Sub CommandButton1_Click()
- 'Option Explicit (刪除)
-
- 'Sub Ex() (刪除)
-
- Dim i As Integer, Sh As Worksheet
-
- Application.DisplayAlerts = False
-
- For Each Sh In Sheets
-
- If Sh.Name <> "工作表1" And Sh.Name <> "工作表2" Then 'Sh.Delete (把刪掉工作表的動作取消)
-
- '活頁簿只留 工作表1:是輸入區,工作表2:是歷史記錄
-
- Sh.Range("A2:E11").Value = "" '(自己加上清除其餘工作表中,特定範圍清空資料的功能)
-
- End If
-
- Next
-
-
- With Sheets("工作表2")
-
- If .UsedRange.Rows.Count = 1 Then '沒有歷史紀錄
-
- Sheets("工作表1").UsedRange.Copy '複製(含標頭)
-
- .Range("a1").PasteSpecial xlPasteValues
-
- Else
-
- Sheets("工作表1").UsedRange.Offset(1).Copy '複製(不含標頭)
-
- .Range("A" & .UsedRange.Rows.Count).Offset(3).PasteSpecial xlPasteValues
-
- 'Offset(3) :空2列->第3列貼上
-
- End If
-
- .UsedRange.Range("E:E").AdvancedFilter xlFilterCopy, , .Cells(1, .Columns.Count), True
-
- '進階篩選 E欄 不重複資料到工作表最右欄 ***取得類別的分類***
-
- i = 2
-
- .Cells(1, .Columns.Count - 1) = .UsedRange.Range("E1") '進階篩選的欄位名稱是E欄的標頭
-
- Do While .Cells(i, .Columns.Count) <> "" '工作表最右欄的儲存格 <>""
-
- 'Set Sh = Sheets.Add(, Sheets(Sheets.Count)) '新增的類別工作表 (這邊不新增工作表,故刪除)
-
- 'Sh.Name = .Cells(i, .Columns.Count) ' (這邊不新增工作表,故刪除)
-
- '.Cells(2, .Columns.Count - 1) = Sh.Name ' (這邊不新增工作表,故刪除)
- '這邊應該要加入,判斷為哪一類別,並把該列資料複製到那個類別的工作表去,但我不會寫,是下面這行?
-
- .UsedRange.AdvancedFilter xlFilterCopy, .Cells(1, .Columns.Count - 1).Resize(2), Sh.[a1], True '左邊這行除錯說沒有WITH,但明明就有,好怪
-
- '工作表2 進階篩選 準則[分類]="工作表1"最右欄的儲存格, 複製到新增的類別工作表[A1]
-
- Do While Sh.UsedRange.Rows.Count > 11 '資料列>11列
-
- Sh.Copy , Sheets(Sh.Index) '1 原工作表複製
-
- Sh.Rows("11:" & Sh.Rows.Count).Delete '2 原工作表刪除11列以下的資料(保持10列)
-
- Set Sh = ActiveSheet '3 複製的工作表 指定給變數
-
- Sh.Rows("2:11").Delete '4 複製的工作表刪除2:11列的資料
-
- Loop
-
- i = i + 1
-
- Loop
-
- .Cells(1, .Columns.Count).CurrentRegion = ""
-
- End With
-
- 'End Sub (原本的,刪除)
- End Sub
複製代碼 回復 4# iceandy6150
我修改了一下大大的程式
可是卡住不能運作了 |
|