DioDocs for Excel
DioDocs for Excel
ソート
機能 > ソート

DioDocs for Excel には、ワークシート内のセル範囲、値、色、またはアイコンに基づいてデータの並べ替えを実行する Sortメソッドがあります。Applyメソッドを使用して、選択されたソート状態を適用し、結果を表示します。

メモ: 結合されたセルが互いに同じサイズであれば、結合セルに対してもソートを実行できます。

DioDocs for Excel では、以下のソートを利用できます。

値によるソート

値によるソートを実行すると、データを順に並べることができます。SortOrientation プロパティを使用して、ソートの方向カテゴリ、つまり列または行を指定します。

値でソートするには、次のコード例を参照してください。

C#
コードのコピー
//Sort()を使用して値でソートします
worksheet.Range["A1:B4"].Sort(worksheet.Range["A1:A4"], orientation: SortOrientation.Columns);

複数の列を値でソート

値による複数列のソートは、1 つのコード行を使用して複数の列をソートします。ValueSortFieldメソッドを使用して、1 つのステートメント内に複数のソートフィールドインスタンスを定義します。SortOrderプロパティを使用して、列の向きとして昇順または降順を指定します。

複数の列を値でソートするには、次のコード例を参照してください。

C#
コードのコピー
//Sort()を使用して値で複数の列をソートします
worksheet.Range["A1:B4"].Sort(SortOrientation.Columns, false, new ValueSortField[] { new ValueSortField(worksheet.Range["A1:A4"],SortOrder.Descending), new ValueSortField(worksheet.Range["B1:B4"], SortOrder.Ascending)});

カスタムソート

ソートは一般的なタスクですが、すべてのデータが一般的な昇順および降順のルールに準拠しているわけではありません。たとえば、月をアルファベット順にソートしても、意味のある方法とは言えません。この場合、DioDocs for Excel はカスタムソートを提供します。カスタムソートの場合は、ValueSortFieldコンストラクタで値の文字列を定義します。

カスタムソートを実装するには、次のコード例を参照してください。

C#
コードのコピー
//カスタムソート値の文字列を指定します
var sortkey = new ValueSortField(worksheet.Range["A1:A2"], "1,2,3");
worksheet.Range["A2:A6"].Sort(SortOrientation.Columns, false, sortkey);

セル背景によるソート

セル背景によるソートは、背景色、パターン、パターン色、グラデーション色、グラデーション角度に基づいてソートを行います。ただし、セル色に基づいてセル背景ソートを行うことはできません。

セル背景でソートするには、次のコード例を参照してください。

C#
コードのコピー
//範囲にパターンを割り当てます
 worksheet.Range["A3"].Interior.Pattern = Pattern.LinearGradient;
 worksheet.Range["A4"].Interior.Pattern = Pattern.LinearGradient;
 worksheet.Range["A5"].Interior.Pattern = Pattern.LinearGradient;
 worksheet.Range["A6"].Interior.Pattern = Pattern.LinearGradient;
//範囲に値を定義します
 worksheet.Range["A3"].Value = 1;
 worksheet.Range["A4"].Value = 2;
 worksheet.Range["A5"].Value = 3;
 worksheet.Range["A6"].Value = 4;
//範囲にグラデーションを割り当てます
( worksheet.Range["A3"].Interior.Gradient as ILinearGradient).ColorStops[0].Color = Color.FromArgb(255, 0, 0);
( worksheet.Range["A3"].Interior.Gradient as ILinearGradient).ColorStops[1].Color = Color.FromArgb(146, 208, 80);
( worksheet.Range["A3"].Interior.Gradient as ILinearGradient).Degree = 90;

( worksheet.Range["A4"].Interior.Gradient as ILinearGradient).ColorStops[0].Color = Color.FromArgb(255, 0, 255);
( worksheet.Range["A4"].Interior.Gradient as ILinearGradient).ColorStops[1].Color = Color.FromArgb(146, 208, 90);
( worksheet.Range["A4"].Interior.Gradient as ILinearGradient).Degree = 90;

( worksheet.Range["A5"].Interior.Gradient as ILinearGradient).ColorStops[0].Color = Color.FromArgb(255, 0, 255);
( worksheet.Range["A5"].Interior.Gradient as ILinearGradient).ColorStops[1].Color = Color.FromArgb(146, 208, 180);
( worksheet.Range["A5"].Interior.Gradient as ILinearGradient).Degree = 90;

( worksheet.Range["A6"].Interior.Gradient as ILinearGradient).ColorStops[0].Color = Color.FromArgb(255, 0, 255);
( worksheet.Range["A6"].Interior.Gradient as ILinearGradient).ColorStops[1].Color = Color.FromArgb(146, 208, 90);
( worksheet.Range["A6"].Interior.Gradient as ILinearGradient).Degree = 90;
// 
 worksheet.Sort.SortFields.Add(new CellColorSortField(worksheet.Range["A1:A2"],  worksheet.Range["A6"].DisplayFormat.Interior, SortOrder.Ascending));
 worksheet.Sort.Range =  worksheet.Range["A3:A6"];
 worksheet.Sort.Orientation = SortOrientation.Columns;
 worksheet.Sort.Apply();

フォントの色によるソート

フォントの色によるソートは、セルの表示形式のフォント色によってソートを行います。ただし、セル色に基づいてソートは実行されません。

フォント色でソートするには、次のコード例を参照してください。

C#
コードのコピー
//範囲に値を割り当てます
 worksheet.Range["A1"].Value = 2;
 worksheet.Range["A2"].Value = 1;
 worksheet.Range["A3"].Value = 1;
 worksheet.Range["A4"].Value = 3;

 worksheet.Range["B1"].Value = 2;
 worksheet.Range["B2"].Value = 1;
 worksheet.Range["B3"].Value = 1;
 worksheet.Range["B4"].Value = 3;
//範囲に色を割り当てます
 worksheet.Range["B1"].Font.Color = Color.FromArgb(0, 128, 0);
 worksheet.Range["B2"].Font.Color = Color.FromArgb(128, 0, 0);
 worksheet.Range["B3"].Font.Color = Color.FromArgb(0, 0, 128);
 worksheet.Range["B4"].Font.Color = Color.FromArgb(128, 128, 0);
//色によるソートを定義します
 worksheet.Sort.SortFields.Add(new FontColorSortField(worksheet.Range["B1:B4"],  worksheet.Range["B1"].DisplayFormat.Font.Color, SortOrder.Descending));
 worksheet.Sort.Range =  worksheet.Range["A1:B4"];
 worksheet.Sort.Orientation = SortOrientation.Columns;
 worksheet.Sort.Apply();

アイコンによるソート

アイコンによるソートは、セルの条件付き書式設定アイコンに基づいてソートを行います。

アイコンでソートするには、次のコード例を参照してください。

C#
コードのコピー
//範囲に値を割り当てます
 worksheet.Range["A1"].Value = 2;
 worksheet.Range["A2"].Value = 1;
 worksheet.Range["A3"].Value = 1;
 worksheet.Range["A4"].Value = 3;

 worksheet.Range["B1"].Value = 2;
 worksheet.Range["B2"].Value = 1;
 worksheet.Range["B3"].Value = 1;
 worksheet.Range["B4"].Value = 3;
//アイコンによるソートを定義します
IIconSetCondition iconset =  worksheet.Range["B1:B4"].FormatConditions.AddIconSetCondition();
iconset.IconSet =  workbook.IconSets[IconSetType.Icon3TrafficLights1];

 worksheet.Sort.SortFields.Add(new IconSortField(worksheet.Range["B1:B4"],  workbook.IconSets[IconSetType.Icon3TrafficLights1][0], SortOrder.Descending));
 worksheet.Sort.Range =  worksheet.Range["A1:B4"];
 worksheet.Sort.Orientation = SortOrientation.Columns;
 worksheet.Sort.Apply();

関連トピック