每 7 行排序,直到工作表末尾

每 7 行排序,直到工作表末尾

我有一张包含 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”中的值进行排序。

相关内容