Dan*_*mbo 3 sorting excel vba copy excel-vba
我有这个代码实际上完全符合我的要求:
转到特定范围,将表复制到新范围并重新排序表.
这是代码:
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
Run Code Online (Sandbox Code Playgroud)
问题是:代码在所有工作表中都不起作用,它在第一个工作表中重复n次.
您永远不会告诉代码转到下一个工作表.此外,您的选择看起来不必要.
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
Run Code Online (Sandbox Code Playgroud)
另外 - 由于你正在对范围进行排序,我猜它包含值而不是公式.如果是这种情况,您可以替换
worksheets(I).Range("CW269:CX294").Copy worksheets(I).Range("CZ269:DA294")
同
worksheets(I).Range("CZ269:DA294").Value = worksheets(I).Range("CW269:CX294").Value
这样做的好处是它稍快,并且不使用剪贴板.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |