如何在多个列上sorting值

我试图找出如何在多个列上sorting值,但我找不到答案

以下是现在的价值观:

ABCDEF Row(1) 20 1 3 5 2 4 Row(2) 19 11 12 14 16 8 

我想find一种方法来订购他们在下面的方式

  ABCDEF Row(1) 1 2 3 4 5 8 Row(2) 11 12 14 16 19 20 

以上只是我拥有的巨大表格的一部分,但我只能按列或按行sorting信息,而不是所有的数据

任何想法如何做到这一点?

您可以使用System.Collections.ArrayList来平整二维范围。 ArrayList对象有一个.Sort方法(还有一个.Reverse方法,如果你需要的话)。

所以,这种方法捕获范围,将其转储到一个ArrayList ,对其进行sorting(升序),然后将其写回原始范围:

 Option Explicit Sub foo() Dim sel As Range Dim arr As Variant, val As Variant Dim lst As Object Dim i As Long 'Simplistic case of capturing the range to operate against, modify if needed Set sel = Application.InputBox("Please select the table (excluding headers) to sort", "Flatten & sort", Type:=8) ' Dump the range values in a 2-d array arr = sel.Value 'Flatten the range/array in to the ArrayList object Set lst = CreateObject("System.Collections.ArrayList") For Each val In arr lst.Add val Next 'Sort the ArrayList lst.Sort ' If you ever need to reverse the list, you can do: ' lst.Reverse ' Dump the sorted ArrayList values back to the worksheet: For i = 1 To lst.Count sel(i) = lst.Item(i - 1) Next End Sub 

之前:

在这里输入图像说明

后:

在这里输入图像说明