0

データベースから Listobject マクロを介して入力された Excel のテーブルがあります。

次のコードを使用してテーブルを並べ替えることができます。

'Sort on projecttabel
Dim lo As Excel.ListObject

Set lo = Plan.ListObjects(1)
With lo
.Sort.SortFields.Clear
    .Sort.SortFields.Add _
        Key:=Range("Table_appnlvd03_nkmgo_report_NKMGO_Report__KHNS_EFTTS_KPI32[klant]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    .Sort.SortFields.Add _
        Key:=Range("Table_appnlvd03_nkmgo_report_NKMGO_Report__KHNS_EFTTS_KPI32[Status]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    .Sort.SortFields.Add _
        Key:=Range("Table_appnlvd03_nkmgo_report_NKMGO_Report__KHNS_EFTTS_KPI32[RFO plandatum]"), SortOn:=xlSortOnValues, Order:=xlDescending, _
        DataOption:=xlSortNormal
    .Sort.SortFields.Add _
        Key:=Range("Table_appnlvd03_nkmgo_report_NKMGO_Report__KHNS_EFTTS_KPI32[Uitvoeren montage plan start]"), SortOn:=xlSortOnValues, Order:=xlDescending, _
        DataOption:=xlSortNormal

    With .Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With

「ステータス」には、1から100の範囲の複数の整数値があります。私がしたいのは、ステータスと別の列に基づいて行をソートすることです。私が遭遇する問題は、並べ替える「2番目の列」がステータスごとに異なることです。

私が作成したいのは、さまざまな日付列がステータスごとに降順でソートされる「ガント」のようなテーブルです。例: (DD-MM-YYYY)

[Status]   [date1]              [date2]         [date3]
1         **10-01-2015**       12-02-2015        31-03-2015      
1         **09-01-2015**       14-02-2015        10-03-2015          
1         **08-01-2015**       06-02-2015        05-03-2015  
1         **07-01-2015**       18-02-2015        28-03-2015  
2         17-01-2015       **15-02-2015**        10-03-2015  
2         27-01-2015       **14-02-2015**        10-03-2015  
2         04-01-2015       **13-02-2015**        16-03-2015  
2         31-01-2015       **05-02-2015**        10-03-2015  
5         18-01-2015       12-02-2015        **30-03-2015**  
5         31-01-2015       18-02-2015        **27-03-2015**  
5         17-01-2015       04-02-2015        **26-03-2015**  
5         07-01-2015       27-02-2015        **08-03-2015**  
5         09-01-2015       24-02-2015        **03-03-2015**  

など これは可能ですか?

4

1 に答える 1

0

テーブルに作業フィールドを追加する必要があります。それを「Sort.Key」と呼び、そのフィールドに次の式を入力します。

=CONCATENATE([@Status],CHAR(133),CHOOSE([@Status],[@date1],[@date2],,,[@date3]))

「Sort.Key」フィールドを使用してテーブルをソートします

于 2015-09-28T12:55:25.123 に答える