【问题标题】:How can I sort rows in Excel alphabetically, without including all columns in the sort?如何在 Excel 中按字母顺序对行进行排序,而不包括排序中的所有列?
【发布时间】:2015-01-07 00:21:35
【问题描述】:

尝试按行的字母顺序对 Excel 中的数据进行排序,但不是在每一行的所有列中。

例如: 按字母顺序对 J7 到 U7 进行排序,然后是 J8 到 U8,一直到 J2000 到 U2000,同时将每个项目保持在其行内(就像第 7 行中的所有单元格在其末尾仍应位于第 7 行一样。)

看来我需要为此使用宏/VBA,因为 Excel 只允许您一次按字母顺序对一行进行排序。如果我选择多行进行排序,它仍然只对第一行进行排序。

关于我可以使用什么样的宏,我已经做了一些研究,但似乎没有任何作用。我发现的一件事类似于按数字排序,但不能按字母顺序排序。

这就是我现在得到的。我记录了一个自己选择和排序行的宏,这样我至少可以得到所有正确的代码:

Sub Macro4()
'
' Macro4 Macro
'
' Keyboard Shortcut: Option+Cmd+j
'

Dim lngIndex As Long
Dim strArray(9 To 11000) As String
Dim intCounter As Integer
Dim x As Integer
intCounter = 1
x = 9
For lngIndex = LBound(strArray) To UBound(strArray)
intCounter = intCounter + 1
strArray(lngIndex) = intCounter
x = x + 1
Range("Jx:UNx").Select
ActiveWorkbook.Worksheets("export_729559 (3).csv").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("export_729559 (3).csv").Sort.SortFields.Add Key:= _
Range("Jx:UNx"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("export_729559 (3).csv").Sort
.SetRange Range("Jx:UNx")
.Header = xlNo
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
Next

End Sub

我现在遇到的错误是底部的“下一个”的“编译错误:下一个没有 For”。但显然有一个 For 更高,据我所知,它们应该被链接,除非两者之间的“With”把事情搞砸了。我已经像上面一样单独尝试过 Next,以及“Next IngIndex”。

【问题讨论】:

    标签: vba sorting excel


    【解决方案1】:

    您的 With 块没有 End。试试这样:

    With ActiveWorkbook.Worksheets("export_729559 (3).csv").Sort
    .SetRange Range("Jx:UNx")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlLeftToRight
    .SortMethod = xlPinYin
    .Apply
    End With 'I have added this line to close your With block
    Next
    

    【讨论】:

    • 谢谢!这修复了那部分,现在它告诉我:运行时错误“1004”:排序引用无效。确保它在您要排序的数据中,并且第一个排序依据框不是相同的或空白的。它在 End With 行之前突出显示“.Apply”。
    • 啊,不错。现在我已经保存了它,它是“export_729559 (3).xlsx”。所以我更新了代码以反映这一点,并清除了 .Apply 错误。现在我得到: 运行时错误'9':下标超出范围并且突出显示以下行:ActiveWorkbook.Worksheets("export_729559 (3).xlsx").Sort.SortFields.Clear
    • @RebeccaHanan,我想帮助你,但这里一个接一个地出现错误,而且它们非常简单;)我建议你在谷歌上寻找错误的定义,你肯定会在那里找到一些帮助。在这里您应该只询问具体问题,而不是调试服务。如果问题现在是另一个问题,请通过标记答案关闭此线程并打开一个新问题,但也要尝试在网络上查找!小提示:“运行时错误 '9':下标超出范围”通常出现在工作表不存在时,或者一般来说,如果您正在寻找不存在的元素。
    猜你喜欢
    • 2015-01-18
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多