1

C# を使用して、Excel で複数の列を並べ替える必要があります。これを行うために Microsoft.Office.Interop.Excel を使用しています。しかし、Range.Sort では 3 つの列だけを並べ替えることができます。3 つ以上の列を並べ替えたいですか? Excel.Range.Sort メソッドを使用して 3 つ以上の列を並べ替える方法はありますか?

4

1 に答える 1

2

Excel 2007 より前は、3 つの並べ替えキーに制限されていましRange.Sortた。これ以上使用することはできません。それがターゲット バージョンである場合は、創造性を発揮する必要があります。考えられるいくつかのアイデアは、データを C# コードに取り込み、そこで並べ替えるか、連結されたキーを含む追加のワークシート列を作成してから、Sort通常どおり適用することです。

Excel 2007 以降のみを使用している場合は、より柔軟な並べ替え機能を利用できますWorksheet.Sort。乱数の 30x10 テーブルを作成A1:J30し、最初の 5 列でソートするマクロを記録しました。これは私が得たものです(コードをクリーニングして重複を排除した後):

With ActiveWorkbook.Worksheets("Sheet1").Sort
    With .SortFields
        .Clear
        .Add Key:=Range("A1:A30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range("B1:B30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range("C1:C30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range("D1:D30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range("E1:E30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    End With
    .SetRange Range("A1:J30")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

これは、C# コードに適用するのはかなり簡単なはずです...

于 2012-04-19T08:01:27.250 に答える