返回列表 上一主題 發帖

分割工作表range放變數進去後執行速度變慢

回復 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

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題