Excel – 自定义按另一个工作表的列中的值进行sorting

我正在尝试根据多个条件对Sheet2的数据集进行sorting,其中一个数据集应该基于Sheet1列G中粘贴的值。所以,首先我想根据第三个数值的升序对数据进行sorting列,然后按我的自定义顺序。

我想在表2中对以下数据进行sorting:

PIC1

首先基于Rank(1-n),然后根据用户指定的COL G Sheet 1中的自定义订单的types:

PIC2

结果应该是:

PIC3

由于col G中用户指定的值可能会更改(也可能是不同的顺序),因此我无法使用静态列表。 通过录制macros,我想出了下面的代码(使用静态列表):

 Columns("A:C").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("C2:C9999") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B9999") _ , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="Type1,Type2,Type3" _ , DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A1:C9999") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

所以我的问题是如何使用循环或如果Excel知道如何提取列中的所有值作为文本string基于Sheet 1 col G中的值的数据。

谢谢!

所以我的问题是如何使用循环或如果Excel知道如何提取列中的所有值作为文本string基于Sheet 1 col G中的值的数据。

例如在Sheet2上转换一系列值:

在这里输入图像说明

以逗号分隔的string,您可以使用:

 Join(WorksheetFunction.Transpose(ThisWorkbook.Worksheets("Sheet2").Range("A2:A4")), ",") 

哪个会返回:

 Type1,Type2,Type3 

所以,你的代码可能是:

 Option Explicit Sub Test() Dim ws1 As Worksheet, ws2 As Worksheet Dim rngToSort As Range, rngOrderType As Range Set ws1 = ThisWorkbook.Worksheets("Sheet1") Set ws2 = ThisWorkbook.Worksheets("Sheet2") Set rngToSort = ws1.Range("A1:C5") Set rngOrderType = ws2.Range("A2:A4") With ws1.Sort.SortFields .Clear .Add Key:=rngToSort.Columns(3), _ SortOn:=xlSortOnValues, _ Order:=xlAscending .Add Key:=rngOrderType.Columns(2), _ SortOn:=xlSortOnValues, _ CustomOrder:=Join(WorksheetFunction.Transpose(rngOrderType), ",") End With With ws1.Sort .SetRange rngToSort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .Apply End With End Sub 

哪个会从Sheet1转换这个:

在这里输入图像说明

对此:

在这里输入图像说明