sorting工作簿中的所有工作表
我有这个代码,实际上正是我想要的:
进入特定的范围,在新的范围内复制表格并重新排列表格。
这里是代码:
Sub copy_paste_sort() Dim oneRange As Range Dim aCell As Range Dim WS_Count As Integer Dim I As Integer ' Set WS_Count equal to the number of worksheets in the active ' workbook. WS_Count = ActiveWorkbook.Worksheets.Count ' Begin the loop. For I = 1 To WS_Count Set oneRange = Range("CZ269:DA294") Set aCell = Range("DA269") Range("CW269:CX294").Select Selection.Copy Range("CZ269:DA294").Select ActiveSheet.Paste oneRange.Sort Key1:=aCell, Order1:=xlDescending, Header:=xlNo Next I End Sub
问题是:代码不能在所有工作表中工作,它在第一个工作表中重复n次。
你永远不会告诉代码去下一个工作表。 另外,你的select看起来不是必要的。
Sub copy_paste_sort() Dim oneRange As Range Dim aCell As Range Dim WS_Count As Integer Dim I As Integer ' Set WS_Count equal to the number of worksheets in the active ' workbook. WS_Count = ActiveWorkbook.Worksheets.Count ' Begin the loop. For I = 1 To WS_Count Set oneRange = worksheets(I).Range("CZ269:DA294") Set aCell = worksheets(I).Range("DA269") worksheets(I).Range("CW269:CX294").Copy worksheets(I).Range("CZ269:DA294") oneRange.Sort Key1:=aCell, Order1:=xlDescending, Header:=xlNo Next I End Sub
另外 – 既然你正在sorting范围,我猜测它包含的值,而不是公式。 如果是这样的话,你可以更换
worksheets(I).Range("CW269:CX294").Copy worksheets(I).Range("CZ269:DA294")
同
worksheets(I).Range("CZ269:DA294").Value = worksheets(I).Range("CW269:CX294").Value
这样做的好处是速度稍快,并且不使用剪贴板。
试试看,
Sub copy_paste_sort() Dim I As Long ' Begin the loop. For I = 1 To ActiveWorkbook.Worksheets.Count With Worksheets(I) With .Range("CW269:CX294") .Copy destination:=.Range("CZ269") .Offset(0, 3).Cells.Sort Key1:=aCell, Order1:=xlDescending, Header:=xlNo End With End With Next I End Sub
你正在循环I
作为工作的指数,但没有做任何事情。 With Worksheets(I) ... End With
依次引用eac h工作表。 请注意Range(...)
变成.Range(...)
以便它知道什么工作表是其父项。