我有一张包含 5 列 AE 和近 10,000 行的工作表。我需要使用 C 列中的数据对工作表末尾的每 7 行进行排序。
以下代码可对范围 A1:E7 执行此操作。是否可以修改此代码以使用其范围内 C 列中的相关数据对每 7 行进行排序,例如范围 A8:E14 的 C8:C14,范围 A15:E21 的 C15:C21 等?
Sub sort_7_rows()
Range("A1:E7").Select
ActiveWorkbook.Worksheets("sequencing (2)").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("sequencing (2)").Sort.SortFields.Add Key:=Range( _
"C1:C7"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("sequencing (2)").Sort
.SetRange Range("A1:E7")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
非常感谢任何专家对此问题的帮助。提前致谢
答案1
有一种非常简单的方法可以不使用 VBA 来实现这一点。它要求您创建两个新列。在第一列中,只需打印行号;例如,在第一行中输入1
,在第二行中输入2
。然后选择两个单元格并填充到数据集的末尾,即 10,000 行。
在您创建的第二列中,输入方程式=ROUNDUP(A1/7,0)*7
。然后将方程式一直填到数据集的底部。这会将第一列中的每个数字四舍五入为最接近的能被 7 整除的数字。这实际上是按七行对数据进行分组。
最后,您将使用Sort
窗口对数据集进行排序:
首先按您创建的第二列中的值进行排序,然后按问题中所称的“行 C”中的值进行排序。