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