Excel 使用3个以上键进行排序(7)

Excel 使用3个以上键进行排序(7),excel,vba,sorting,Excel,Vba,Sorting,我正在尝试用3个以上的键对工作表进行排序 我知道我需要分开我的钥匙,但我找不到任何适合我的东西 我想添加此VBA,以便它可以在任何工作簿/工作表中工作 Sub Sort() With Range("A1", Range("AZ" & Rows.Count).End(xlUp)) .Sort Key1:=.Cells(1, 32), Order1:=xlDescending, Header:=xlYes, _ Key2:=.Cells(1, 31), Order1:=x

我正在尝试用3个以上的键对工作表进行排序

我知道我需要分开我的钥匙,但我找不到任何适合我的东西

我想添加此VBA,以便它可以在任何工作簿/工作表中工作

Sub Sort()
With Range("A1", Range("AZ" & Rows.Count).End(xlUp))
    .Sort Key1:=.Cells(1, 32), Order1:=xlDescending, Header:=xlYes, _
      Key2:=.Cells(1, 31), Order1:=xlDescending, Header:=xlYes, _
      Key3:=.Cells(1, 26), Order1:=xlDescending, Header:=xlYes, _
      Key4:=.Cells(1, 25), Order1:=xlDescending, Header:=xlYes, _
      Key5:=.Cells(1, 15), Order1:=xlDescending, Header:=xlYes, _
      Key6:=.Cells(1, 5), Order1:=xlDescending, Header:=xlYes, _
      Key7:=.Cells(1, 4), Order1:=xlDescending, Header:=xlYes
End With
End Sub
编辑:最终VBA代码

Sub Sort()

Range("A1", Range("AZ" & Rows.Count).End(xlUp)).Select
Selection.Sort Key1:=Range("D1"), _
  Order1:=xlDescending, Header:=xlYes, _
  Key2:=Range("E2"), _
  Order2:=xlDescending, Header:=xlYes, _
  Key3:=Range("O2"), _
  Order3:=xlDescending, Header:=xlYes

Range("A1", Range("AZ" & Rows.Count).End(xlUp)).Select
Selection.Sort Key1:=Range("Y2"), _
  Order1:=xlDescending, Header:=xlYes, _
  Key2:=Range("Z2"), _
  Order2:=xlDescending, Header:=xlYes, _
  Key3:=Range("AE2"), _
  Order3:=xlDescending, Header:=xlYes

Range("A1", Range("AZ" & Rows.Count).End(xlUp)).Select
Selection.Sort Key1:=Range("AF2"), _
  Order1:=xlDescending, Header:=xlYes

End Sub

我以前也遇到过同样的问题,我必须对8列进行排序,我是这样解决的:
(基本上,您需要从末尾开始一次又一次地对所选内容重新排序)


允许使用3个键,这对于大多数用途来说已经足够了。请提供您的数据样本,以说明如何在不将第一个排序键与后续排序键混淆的情况下实现7个排序键。如果绝对必要,首先对“第二部分”(键5到7)进行排序,然后重复,移动到主排序键。如果使用2007或更高版本,请记录一个宏,该宏将使用
排序对象-您可以使用7个以上的级别。@ashleedawg我使用此选项,因为我需要从数据样本中删除重复项。并非所有行都用不同单元格中的数据填充,如果它们在排序所依据的任何单元格中都没有数据,则可以删除重复的数据。排序函数只接受一个参数,
Header
,您可以为每个键添加一次。在函数调用中多次包含同一参数是否会导致出现问题?您定义要排序的范围的方式看起来也很可疑-您在该行上是否收到任何错误消息?谢谢,看起来与我预期的一样,但从未成功。我会看一看,如果它对我有用的话,我会回来的:)
'custom sort b d g j m p s v
Range("A4:X757").Select
Selection.Sort Key1:=Range("V4"), _
Order1:=xlAscending, _
Key2:=Range("S4"), _
Order2:=xlAscending, _
Key3:=Range("P4"), _
Order3:=xlAscending

Range("A4:X757").Select
Selection.Sort Key1:=Range("M4"), _
Order1:=xlAscending, _
Key2:=Range("J4"), _
Order2:=xlAscending, _
Key3:=Range("G4"), _
Order3:=xlAscending

Range("A4:X757").Select
Selection.Sort Key1:=Range("B4"), _
Order1:=xlAscending, _
Key2:=Range("D4"), _
Order2:=xlAscending