提示:其它语言是由 Google 机器翻译的。 你可以访问 English 版本。
登录
x
or
x
x
注册账户
x

or

如何在Excel中同时对多个行或列进行独立排序?

在Excel中,您可以应用“排序”功能仅对一系列列中的一行或一列进行排序,但是,如果您需要一次对多个行或列进行独立排序,则可以显示以下屏幕截图。 有什么快速的方法可以在Excel中解决这个任务吗?

doc对多列1进行排序

用VBA代码一次独立排列多个列

用VBA代码一次对多行独立排序


箭头蓝色右泡 用VBA代码一次独立排列多个列


要按照升序独立排序多个列,以下VBA代码可能会对您有所帮助,请按照以下方式进行操作:

1。 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications 窗口。

2。 点击 插页 > 模块,并将以下代码粘贴到 模块 窗口。

VBA代码:一次独立排列多个列:

Sub SortIndividualJR()
'Updateby Extendoffice 20161123
    Dim xRg As Range
    Dim yRg As Range
    Dim ws As Worksheet
    Set ws = ActiveSheet
    On Error Resume Next
    Set xRg = Application.InputBox(Prompt:="Range Selection:", _
                                    Title:="Kutools for excel", Type:=8)
    Application.ScreenUpdating = False
    For Each yRg In xRg
        With ws.Sort
            .SortFields.Clear
            .SortFields.Add Key:=yRg, Order:=xlAscending
            .SetRange ws.Range(yRg, yRg.End(xlDown))
            .Header = xlNo
            .MatchCase = False
            .Apply
        End With
    Next yRg
    Application.ScreenUpdating = True
End Sub

3。 然后按 F5 键以运行此代码,并弹出一个提示框提醒您选择要根据每列进行排序的数据范围,请参阅屏幕截图:

doc对多列2进行排序

4。 然后点击 OK,每一列都被一次依赖地排序,见截图:

doc对多列1进行排序


箭头蓝色右泡 用VBA代码一次对多行独立排序

如果你想独立排序多行,这里也是一个VBA代码。

1。 根据每行选择您想要排序的数据。

doc对多列3进行排序

2。 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications 窗口。

3。 点击 插页 > 模块,并将以下代码粘贴到 模块 窗口。

VBA代码:一次独立排列多行:

Sub SortIndividualR()
'Updateby Extendoffice 20161123
    Dim xRg As Range, yRg As Range
    If TypeName(Selection) <> "Range" Then Exit Sub
    Set xRg = Selection
    If xRg.Count = 1 Then
        MsgBox "Select multiple cells!", vbExclamation, "Kutools for Excel"
        Exit Sub
    End If
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With
    Application.ScreenUpdating = False
    For Each yRg In xRg.Rows
        yRg.Sort Key1:=yRg.Cells(1, 1), _
        Order1:=xlAscending, _
        Header:=xlNo, _
        Orientation:=xlSortRows
    Next yRg
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
    Application.ScreenUpdating = True
End Sub

4。 然后按 F5 运行这段代码的关键是,每行的数据都被一次排序过,请看截图:

doc对多列4进行排序



推荐的Excel生产力工具

Kutools for Excel帮助您提前完成工作,并从人群中脱颖而出

  • 超过300强大的高级功能,专为1500工作场景设计,通过70%提高生产力,让您有更多时间照顾家庭和享受生活。
  • 不再需要记忆公式和VBA代码,从现在起让你的大脑休息一下。
  • 成为3分钟的Excel专家,复杂和重复的操作可以在几秒钟内完成,
  • 每天减少成千上万的键盘和鼠标操作,现在告别职业病。
  • 110,000高效人才和300 +世界知名公司的选择。
  • 60-day full功能免费试用。 60天退款保证。 2多年的免费升级和支持。

将选项卡式浏览和编辑带到Microsoft Office,远比浏览器的选项卡强大

  • Office选项卡专为Word,Excel,PowerPoint和其他Office应用程序设计:Publisher,Access,Visio和Project。
  • 在同一窗口的新选项卡中打开并创建多个文档,而不是在新窗口中。
  • 通过50%提高您的工作效率,每天为您减少数百次鼠标点击!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    EVAN · 3 months ago
    I love this, I'm curious as to the functionality of sorting by color for each column individually. I tried this but it didn't work:


    Dim xRg As Range
    Dim yRg As Range
    Dim ws As Worksheet
    Set ws = ActiveSheet
    On Error Resume Next
    Set xRg = Application.InputBox(Prompt:="Range Selection:", _
    Title:="Kutools for excel", Type:=8)
    Application.ScreenUpdating = False
    For Each yRg In xRg
    With ws.Sort
    .SortFields.Clear
    .SortFields.Add Key:=yRg, _
    SortOn:=xlSortOnCellColor, Order:=xlDescending, DataOption:=xlSortNormal
    .SetRange ws.Range(yRg, yRg.End(xlDown))
    .Header = xlNo
    .MatchCase = False
    .Apply
    End With
    Next yRg
    Application.ScreenUpdating = True
    End Sub
  • To post as a guest, your comment is unpublished.
    Kevin · 4 months ago
    ¿Cómo puedo ordenar por color múltiples filas de forma independiente y que las celdas que no tengan color estén a la derecha?
  • To post as a guest, your comment is unpublished.
    Chris · 5 months ago
    When I try to sort the columns it sorts data outside of the sected range! Why is this?