- 帖子
- 234
- 主題
- 19
- 精華
- 0
- 積分
- 276
- 點名
- 0
- 作業系統
- Windows XP
- 軟體版本
- office 2003
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2013-1-7
- 最後登錄
- 2021-10-7
|
3#
發表於 2020-1-16 13:00
| 只看該作者
回復 2# lamb22368
你的r是算到新開的Page的Row
r = Range("A1").End(xlDown).Row
請改成
r = Sheets(1).Range("A1").End(xlDown).Row
並改放到外層,否則當程式執行篩選後r值會跟著改變,無法篩選出正確資料
Public Sub 批次分割工作表()
'複製業務到Z欄
Columns("A:A").Copy
Columns("Z:Z").Insert shift:=xlToRight
'移除重複
ActiveSheet.Range("Z:Z").RemoveDuplicates Columns:=1, Header:=xlYes
r = Sheets(1).Range("A1").End(xlDown).Row
'新增工作表
For i = 2 To Range("Z1").End(xlDown).Row
Sheets.Add after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Sheets(1).Cells(i, "Z")
'不知為何range丟變數進去執行速度變很慢
' r = Sheets(1).Range("A1").End(xlDown).Row
Sheets(1).Range("A1:U" & r).AutoFilter field:=1, Criteria1:=Sheets(1).Cells(i, "Z") '篩選這個功能是在Range物件底下的方法
Sheets(1).Range("A1:U" & r).Copy Range("A1")
'直接指定範圍運行速度就很快
' Sheets(1).Range("A1:U14").AutoFilter field:=1, Criteria1:=Sheets(1).Cells(i, "Z") '篩選這個功能是在Range物件底下的方法
' Sheets(1).Range("A1:U14").Copy Range("A1")
Next
Sheets(1).Select
Columns("Z").Delete
Sheets(1).Range("A1:U14").AutoFilter
End Sub |
|