2017-03-06 85 views
1

我想根據多個條件對Sheet2中的數據集進行排序,其中一個數據集應該基於粘貼在Sheet1列G中的值。所以首先我想根據第三列中值的升序排序我的數據,然後按我的自定義順序排序。Excel - 根據另一個表中的值自定義排序

我想在表2中的下列數據進行排序:

pic1

第一基於秩(1-N),然後基於與COLģ表1的自定義命令的類型由用戶指定:

pic2

結果應該是然後:

pic3

由於用戶在列G中指定的值可能會更改(也可能是不同的順序),因此我無法使用靜態列表。通過錄制宏的我想出了下面的代碼(它使用一個靜態列表):

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 

所以我的問題是,如何通過使用一個迴路,或者基於在Sheet1山坳綠色的值對數據進行排序Excel知道如何提取列中的所有值作爲文本字符串。

謝謝!

回答

1

所以我的問題是如何使用循環或如果Excel知道如何提取列中的所有值作爲文本字符串基於Sheet1 col G中的值的數據。

要轉換一系列值,例如在Sheet2

到一個逗號分隔的字符串,你可以使用:

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從這個:

enter image description here

要這樣:

enter image description here

相關問題