Sorting Excel 2010 VBA宏调整,将所有行逐行向下调整到最后一行(14000行)
现在,宏执行以下操作: 1.选择整行。2.横向排序(从左到右)。3.转到下一排。(我已经准备好按Ctrl+s键并在下一行再次运行它。这正是我试图避免的,因为我必须执行14000行) 我如何修改代码,从第1行一直到第14000行做同样的事情?(我不希望它逐行检查是否有内容,因为这会减慢代码的速度。我宁愿现在将行号硬编码为14000,然后根据需要手动更改)Sorting Excel 2010 VBA宏调整,将所有行逐行向下调整到最后一行(14000行),sorting,excel,vba,Sorting,Excel,Vba,现在,宏执行以下操作: 1.选择整行。2.横向排序(从左到右)。3.转到下一排。(我已经准备好按Ctrl+s键并在下一行再次运行它。这正是我试图避免的,因为我必须执行14000行) 我如何修改代码,从第1行一直到第14000行做同样的事情?(我不希望它逐行检查是否有内容,因为这会减慢代码的速度。我宁愿现在将行号硬编码为14000,然后根据需要手动更改) 我发现这段代码似乎就是这样,但我不知道如何让这两段代码一起工作: Sub FindEmptyCell_2() Dim i As Integ
我发现这段代码似乎就是这样,但我不知道如何让这两段代码一起工作:
Sub FindEmptyCell_2()
Dim i As Integer
Do
i = i + 1
Loop Until IsEmpty(Range("A1").Offset(i, 0).Value)
Range("A1").Offset(i, 0).Select
End Sub
比如:
Sub Macro1()
Dim sht As Worksheet, rw As Range
Set sht = ActiveWorkbook.Worksheets("Sheet1")
For Each rw In sht.UsedRange.Rows
With sht.Sort
.SortFields.Clear
.SortFields.Add Key:=rw, SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
.SetRange rw
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
Next rw
End Sub
要尽可能少地修改代码,您可以使用以下方法:
Sub SortingOneByOne()
'
' SortingOneByOne Macro
'
' Keyboard Shortcut: Ctrl+s
'
For x = 1 to 14000 'From Row 1 to 14000
ActiveCell.Rows(x).EntireRow.Select
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=ActiveCell.Range _
("A" & x & ":AEA" & x), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sheet2").Sort
.SetRange ActiveCell.Range(x)
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
Next x
End Sub
这似乎是sht.Sort的
错误。我想你必须在一个范围内排序。在测试中为我工作。我得到编译错误:在那一行上找不到方法或数据成员。奇怪。。。。我用的是Excel2003,可能是和这个有关的。
Sub SortingOneByOne()
'
' SortingOneByOne Macro
'
' Keyboard Shortcut: Ctrl+s
'
For x = 1 to 14000 'From Row 1 to 14000
ActiveCell.Rows(x).EntireRow.Select
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=ActiveCell.Range _
("A" & x & ":AEA" & x), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sheet2").Sort
.SetRange ActiveCell.Range(x)
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
Next x
End Sub