2012-04-19 11 views
1

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

答えて

1

Excel 2007以前は、3つのソートキーに制限されていました。Range.Sortは、これ以上使用できません。それが目標バージョンであれば、データをC#コードにプルしてソートするか、連結キーを含む余分なワークシートの列を作成してから通常通りSortを適用するという2つの考え方が必要です。

Excel 2007以降を使用している場合は、より柔軟な並べ替え機能(Worksheet.Sort)があります。 A1:J30に30x10の乱数表を作成し、最初の5つの列をソートしたマクロを記録しました。これは私が(多少のコード​​を掃除し、デ複製後に)得たものである:

あなたのC#コードに適用することはかなり簡単なはず
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 

...

+0

おかげでマイク。私はそれを私のC#コードに適用することができました。それはうまくいった。 –

関連する問題