SPREAD for WPF 4.0J - GcSpreadSheet
セルの結合
MESCIUS SPREAD for WPF 4.0J - GcSpreadSheet > 開発者ガイド > セル > セルの結合

ワークシートのセルを結合して複数行や複数列にまたがるセルを実現できます。

結合セルは指定した範囲内のセルを組み合わせて1つのセルを作成することです。例えば、次の画像で示しているように、A1~C3のセル範囲を結合すると、セルA1がA1からC3までのスペースを占有します。

複数セルを結合すると、結合範囲の最初セル(アンカーセル)のデータがすべてのスペースを占有します。結合範囲の他のセルにあるデータが各セルに保持され、結合範囲によって非表示されます。セル結合を解除すると、すべてのセルの中身が以前と同様に再表示されます。

ワークシートのセルを結合するにはIRangeインタフェースのMergeメソッドを使用し、結合を解除するには同じインタフェースのUnMergeメソッドを使用します。

次のサンプルコードは2行2列目のセルを2行3列、結合します。

コードのコピー
// セルを結合します。 
GcSpreadSheet1.Workbook.ActiveSheet.Cells["A1"].Interior.Color = GrapeCity.Spreadsheet.Color.FromKnownColor(GrapeCity.Core.KnownColor.Thistle); 
GcSpreadSheet1.Workbook.ActiveSheet.Cells["A1:C3"].Merge(); 
GcSpreadSheet1.Workbook.ActiveSheet.Cells["A1"].Text = "結合したセル範囲"; 

// セルを結合解除します。 
GcSpreadSheet1.Workbook.ActiveSheet.Cells["A1:C3"].UnMerge(); 
コードのコピー
' セルを結合します。
GcSpreadSheet1.Workbook.ActiveSheet.Cells("A1").Interior.Color = GrapeCity.Spreadsheet.Color.FromKnownColor(GrapeCity.Core.KnownColor.Thistle)
GcSpreadSheet1.Workbook.ActiveSheet.Cells("A1:C3").Merge()
GcSpreadSheet1.Workbook.ActiveSheet.Cells("A1").Text = "結合したセル範囲"

' セルを結合解除します。
GcSpreadSheet1.Workbook.ActiveSheet.Cells("A1:C3").UnMerge()

既存の結合範囲と交差する範囲に対する結合

既に設定されている結合範囲と交差する範囲を結合した場合、結合範囲の優先度にもとづいてコントロールに反映される結合範囲が決まります。最も優先度の高い結合範囲と交差する結合範囲は解除されます。結合範囲の優先度は次のルールで判定されます。

セルの自動マージ

自動マージ機能を使用すると、列または行内で重複テキストが含まれた隣接するセルを自動的にマージされるように設定できます。セルの自動マージを行う列と行を指定することができます。

これにより、冗長性(テキストの繰り返し)を除いて、ワークシートの複雑さを取り除くことができます。また、重複するセルを手動で確認して1つずつ結合する必要がなくなるため、時間と労力を節約できます。

次の図は、自動マージ操作によって列内の重複テキストがどのように結合されるかを示しています。

ワークシートで自動マージを有効にするには、MergePolicy 列挙体を使用できます。

マージの処理方法は、MergePolicy 列挙体を使用して設定します。

メモ:

 

以下のコードは、ワークシートで2列目の同じ値を持つセルを自動的にマージする方法を示します。

コードのコピー
<gss:GcSpreadSheet Name="GcSpreadSheet1" HorizontalAlignment="Left" Margin="10,24,0,0" VerticalAlignment="Top">
            <gss:GcSpreadSheet.Sheets>
                <gss:SheetInfo Name="Sheet1" RowCount="10">
                    <gss:SheetInfo.Columns>
                        <gss:ColumnInfo />
                        <gss:ColumnInfo MergePolicy ="Always"/>
                        <gss:ColumnInfo/>
                        <gss:ColumnInfo />
                        <gss:ColumnInfo/>
                        <gss:ColumnInfo/>
                    </gss:SheetInfo.Columns>
                </gss:SheetInfo>
            </gss:GcSpreadSheet.Sheets>
        </gss:GcSpreadSheet>
コードのコピー
// 2列目の MergePolicy を「Always」に設定します。 
GcSpreadSheet1.Workbook.ActiveSheet.Cells["B1"].Text = "AutoMerge"; 
GcSpreadSheet1.Workbook.ActiveSheet.Cells["B2"].Text = "AutoMerge"; 
GcSpreadSheet1.Workbook.ActiveSheet.Cells["B3"].Text = "AutoMerge"; 
GcSpreadSheet1.Workbook.ActiveSheet.Cells["B4"].Text = "AutoMerge"; 
GcSpreadSheet1.Workbook.ActiveSheet.Columns[1].MergePolicy = MergePolicy.Always; 
コードのコピー
' 2列目の MergePolicy を「Always」に設定します。
GcSpreadSheet1.Workbook.ActiveSheet.Cells("B1").Text = "AutoMerge"
GcSpreadSheet1.Workbook.ActiveSheet.Cells("B2").Text = "AutoMerge"
GcSpreadSheet1.Workbook.ActiveSheet.Cells("B3").Text = "AutoMerge"
GcSpreadSheet1.Workbook.ActiveSheet.Cells("B4").Text = "AutoMerge"
GcSpreadSheet1.Workbook.ActiveSheet.Columns(1).MergePolicy = MergePolicy.Always