SPREAD for WPF 4.0J - GcSpreadSheet
ソート
MESCIUS SPREAD for WPF 4.0J - GcSpreadSheet > 開発者ガイド > ソート

GcSpreadSheetは、ワークシート内データの並べ替えに対応しています。本機能を使用すると、データを効率的に整理でき、データを迅速に解析することができます。

ソート操作は、セル値のデータ型に基づいて実行されます。例えば、DateTimeセル型にソートを適用すると、データが日付に基づいて並べ替えられます。ただし、文字列型のデータを含むセルの場合、データがアルファベット順に並べ替えられます。

列のソート

ISortインタフェースのApplyメソッドを使用することで、1列や複数列のデータをソートできます。ソート順は、昇順(AからZ、0から9)または降順(Zから0)のいずれかに設定できます。SortOrder列挙体を使用して、並べ替え順序を指定できます。

データをセル値(テキスト、数値、など)、フォント色、セル色、条件付き書式アイコンを元にソートできます。ソートフィールドをISortFieldsインタフェースのAddメソッドを使用して指定でき、ソート操作の詳細を本インタフェースのSortOnプロパティで設定できます。セル値にカスタムソートを適用するには、ISortFieldインタフェースのDataOptionプロパティを使用します。

テキストを数値として並べ替えるには、SortDataOption列挙体をTextAsNumbersに設定します。

メモ: GcSpreadSheetではユーザーインタフェースからデータをソートする際に、オートフィルタのユーザーインタフェースを使用する必要があります。
コードのコピー
// ワークシートでのソート操作(列の並べ替え)。
GcSpreadSheet.Workbook.Worksheets[1].Cells[0, 0].Value = 123;
GcSpreadSheet.Workbook.Worksheets[1].Cells[1, 0].Value = 123;
GcSpreadSheet.Workbook.Worksheets[1].Cells[2, 0].Value = 832;
GcSpreadSheet.Workbook.Worksheets[1].Cells[3, 0].Value = 50;
GcSpreadSheet.Workbook.Worksheets[1].Cells[4, 0].Value = 123;
GcSpreadSheet.Workbook.Worksheets[1].Cells[5, 0].Value = 234;
GcSpreadSheet.Workbook.Worksheets[1].Cells[6, 0].Value = 452;
GcSpreadSheet.Workbook.Worksheets[1].Cells[7, 0].Value = 234;
GcSpreadSheet.Workbook.Worksheets[1].Cells[8, 0].Value = 456;
GcSpreadSheet.Workbook.Worksheets[1].Cells[9, 0].Value = 546;
GcSpreadSheet.Workbook.Worksheets[1].Name = "ワークシートでのソート操作";

// ソートのヘッダーを「No」に設定します。そうでない場合、行1はヘッダー行と見なされ、データは列ソートでソートされません。
GcSpreadSheet.Workbook.Worksheets[1].Sort.Header = YesNoGuess.No;

// 列Aの値を昇順で並べ替えます。
GcSpreadSheet.Workbook.Worksheets[1].Sort.SortFields.Add("A", SortOn.Value, SortOrder.Ascending);
GcSpreadSheet.Workbook.Worksheets[1].Sort.Apply();
コードのコピー
' ワークシートでのソート操作(列の並べ替え)。
GcSpreadSheet.Workbook.Worksheets(1).Cells(0, 0).Value = 123
GcSpreadSheet.Workbook.Worksheets(1).Cells(1, 0).Value = 123
GcSpreadSheet.Workbook.Worksheets(1).Cells(2, 0).Value = 832
GcSpreadSheet.Workbook.Worksheets(1).Cells(3, 0).Value = 50
GcSpreadSheet.Workbook.Worksheets(1).Cells(4, 0).Value = 123
GcSpreadSheet.Workbook.Worksheets(1).Cells(5, 0).Value = 234
GcSpreadSheet.Workbook.Worksheets(1).Cells(6, 0).Value = 452
GcSpreadSheet.Workbook.Worksheets(1).Cells(7, 0).Value = 234
GcSpreadSheet.Workbook.Worksheets(1).Cells(8, 0).Value = 456
GcSpreadSheet.Workbook.Worksheets(1).Cells(9, 0).Value = 546
GcSpreadSheet.Workbook.Worksheets(1).Name = "ワークシートでのソート操作"

' ソートのヘッダーを「No」に設定します。そうでない場合、行1はヘッダー行と見なされ、データは列ソートでソートされません。
GcSpreadSheet.Workbook.Worksheets(1).Sort.Header = YesNoGuess.No

' 列Aの値を昇順で並べ替えます。
GcSpreadSheet.Workbook.Worksheets(1).Sort.SortFields.Add("A", SortOn.Value, SortOrder.Ascending)
GcSpreadSheet.Workbook.Worksheets(1).Sort.Apply()

AutoFilterで範囲のソート

オートフィルタでソートを実行すると、項目を順序に並べ替えるとともに、指定基準に基づいて、同じプロパティを持つ項目をグループ化することもできます。

IRangeインタフェースのAutoFilterメソッドを使用することで、ワークシートでの選択範囲用のオートフィルタを作成できます。このメソッドを使用した後、ISort インタフェースのApplyメソッドを使用してソート操作を適用できます。オートフィルタを使用してワークシートを並べ替える際、SortOrder列挙体を使用することで、ソート順序を昇順や降順として指定できます。

コードのコピー
// AutoFilterによるソート。
GcSpreadSheet.Workbook.Worksheets[0].Range("B2").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("B3").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("B4").Value = "Apple";
GcSpreadSheet.Workbook.Worksheets[0].Range("B5").Value = "Orange";
GcSpreadSheet.Workbook.Worksheets[0].Range("B6").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("B7").Value = "Orange";
GcSpreadSheet.Workbook.Worksheets[0].Range("B8").Value = "Apple";
GcSpreadSheet.Workbook.Worksheets[0].Range("B9").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("C2").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("C3").Value = "Orange";
GcSpreadSheet.Workbook.Worksheets[0].Range("C4").Value = "Apple";
GcSpreadSheet.Workbook.Worksheets[0].Range("C5").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("C6").Value = "Orange";
GcSpreadSheet.Workbook.Worksheets[0].Range("C7").Value = "Orange";
GcSpreadSheet.Workbook.Worksheets[0].Range("C8").Value = "Apple";
GcSpreadSheet.Workbook.Worksheets[0].Range("C9").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("D2").Value = "Apple";
GcSpreadSheet.Workbook.Worksheets[0].Range("D3").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("D4").Value = "Orange";
GcSpreadSheet.Workbook.Worksheets[0].Range("D5").Value = "Apple";
GcSpreadSheet.Workbook.Worksheets[0].Range("D6").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Range("D7").Value = "Orange";
GcSpreadSheet.Workbook.Worksheets[0].Range("D8").Value = "Apple";
GcSpreadSheet.Workbook.Worksheets[0].Range("D9").Value = "Banana";
GcSpreadSheet.Workbook.Worksheets[0].Name = " AutoFilterによるソートr";

// この場合、「Banana」と「Apple」の値を含む範囲をフィルタリングしています。 
// フィルタリング後のデータが昇順に並べ替えられます。
GcSpreadSheet.Workbook.Worksheets[0].Range("B1:D10").AutoFilter(0, "Banana", GrapeCity.Spreadsheet.AutoFilterOperator.Or, "Apple");
GcSpreadSheet.Workbook.Worksheets[0].AutoFilter.Sort.SortFields.Add("B1", GrapeCity.Spreadsheet.SortOn.Value, SortOrder.Ascending);
GcSpreadSheet.Workbook.Worksheets[0].AutoFilter.Sort.Apply();            
コードのコピー
' AutoFilterによるソート。
GcSpreadSheet.Workbook.Worksheets(0).Range("B2").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("B3").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("B4").Value = "Apple"
GcSpreadSheet.Workbook.Worksheets(0).Range("B5").Value = "Orange"
GcSpreadSheet.Workbook.Worksheets(0).Range("B6").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("B7").Value = "Orange"
GcSpreadSheet.Workbook.Worksheets(0).Range("B8").Value = "Apple"
GcSpreadSheet.Workbook.Worksheets(0).Range("B9").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("C2").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("C3").Value = "Orange"
GcSpreadSheet.Workbook.Worksheets(0).Range("C4").Value = "Apple"
GcSpreadSheet.Workbook.Worksheets(0).Range("C5").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("C6").Value = "Orange"
GcSpreadSheet.Workbook.Worksheets(0).Range("C7").Value = "Orange"
GcSpreadSheet.Workbook.Worksheets(0).Range("C8").Value = "Apple"
GcSpreadSheet.Workbook.Worksheets(0).Range("C9").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("D2").Value = "Apple"
GcSpreadSheet.Workbook.Worksheets(0).Range("D3").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("D4").Value = "Orange"
GcSpreadSheet.Workbook.Worksheets(0).Range("D5").Value = "Apple"
GcSpreadSheet.Workbook.Worksheets(0).Range("D6").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Range("D7").Value = "Orange"
GcSpreadSheet.Workbook.Worksheets(0).Range("D8").Value = "Apple"
GcSpreadSheet.Workbook.Worksheets(0).Range("D9").Value = "Banana"
GcSpreadSheet.Workbook.Worksheets(0).Name = " AutoFilterによるソート"

' この場合、「Banana」と「Apple」の値を含む範囲をフィルタリングしています。
' フィルタリング後のデータが昇順に並べ替えられます。
GcSpreadSheet.Workbook.Worksheets(0).Range("B1:D10").AutoFilter(0, "Banana", GrapeCity.Spreadsheet.AutoFilterOperator.Or, "Apple")
GcSpreadSheet.Workbook.Worksheets(0).AutoFilter.Sort.SortFields.Add("B1", GrapeCity.Spreadsheet.SortOn.Value, SortOrder.Ascending)
GcSpreadSheet.Workbook.Worksheets(0).AutoFilter.Sort.Apply()