如何在多个列上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
之前:
后: