0

我无法为一系列列增加行并对每一行的范围进行排序,有人可以指导我完成这个吗?

使用宏或 VBA,我如何从 5 列中以从左到右的升序对整数进行排序,每次 1 行遍历所有数据行(约 765 行)。

每行有 6 列数据,但只有前 5 列需要排序。每行都有相同数量的列和数据,并且永远不会有包含空白或 NULL 条目的单元格。一行中的每一列都包含一个整数,该整数对于该行是唯一的。

每行需要独立于前一行或下一行进行排序,并且每行中的第 6 列必须与已排序的前 5 列保持一致。

我无法弄清楚如何增加一系列列以便在每一行中执行排序。非常感谢。

4

1 回答 1

0

我假设您要排序的五列是 A 到 E。这个宏循环遍历每一列(整列)并独立于相邻列进行排序。

尝试这个:

Sub Macro2()
    Set rng = Range("A:E")

    For Each col In rng.Columns
        Set rng = Columns(col.Column)

        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Cells(1, col.Column), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet1").Sort
            .SetRange rng
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Next
End Sub

数据看起来像这样开始:

在此处输入图像描述

运行宏后将如下所示:

在此处输入图像描述

请注意,最后一列未触及。


****编辑****

这是您如何从左到右排序行而不是如上所示的列:(它将行 A1 到 A10 从列“A”排序到列“E”

Sub Macro2()
    Set Rng = Range("A1:E10")
    col = Rng.Cells(Rng.Count).Column

    Dim lastcol As Integer
    lastcol = Rng.Cells(Rng.Count).Column

    For Each rrow In Rng.Rows
        Set RngB = Range(ActiveSheet.Cells(rrow.Row, Rng.Column), ActiveSheet.Cells(rrow.Row, lastcol))

        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=RngB, _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet1").Sort
            .SetRange RngB
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlLeftToRight
            .SortMethod = xlPinYin
            .Apply
        End With
    Next
End Sub
于 2013-10-03T18:18:07.787 回答