列のデータを自動的にマージする
対象製品
El Tabelle for .NET
詳細
El Tabelle には自動マージの機能は備わっていないため、コーディングでセルの値をチェックし、マージする必要があります。
次の AutoColumnMerge 関数は自動マージのコーディング例です。引数に対象となる Sheet コントロールと列の番号を指定すると、同じデータが隣り合っているセルを連結します。
[Visual Basic]
[C#]
使い方
[Visual Basic]
[C#]
なお、AutoColumnMerge 関数ではセル型を考慮していない点に注意してください。
2003年12月22日以降のトライアル版、修正版にこのコードを使用したサンプルプロジェクトが含まれています。
次の AutoColumnMerge 関数は自動マージのコーディング例です。引数に対象となる Sheet コントロールと列の番号を指定すると、同じデータが隣り合っているセルを連結します。
[Visual Basic]
Private Sub AutoColumnMerge(ByRef TargetSheet As GrapeCity.Win.ElTabelle.Sheet, ByVal ColumnNumber As Integer)
Dim intCounterA, intCounterB As Integer
For intCounterA = 0 To TargetSheet.MaxRows - 1
For intCounterB = intCounterA To TargetSheet.MaxRows - 1
If Not TargetSheet.Item(ColumnNumber, intCounterB).Value = TargetSheet.Item(ColumnNumber, intCounterA).Value Then Exit For
Next
If intCounterB > intCounterA + 1 Then
TargetSheet.Merge(New GrapeCity.Views.ElTabelle.Range(ColumnNumber, intCounterA, ColumnNumber, intCounterB - 1, GrapeCity.Views.ElTabelle.RangeStyle.Cells))
intCounterA = intCounterB - 1
End If
Next
End Sub
Dim intCounterA, intCounterB As Integer
For intCounterA = 0 To TargetSheet.MaxRows - 1
For intCounterB = intCounterA To TargetSheet.MaxRows - 1
If Not TargetSheet.Item(ColumnNumber, intCounterB).Value = TargetSheet.Item(ColumnNumber, intCounterA).Value Then Exit For
Next
If intCounterB > intCounterA + 1 Then
TargetSheet.Merge(New GrapeCity.Views.ElTabelle.Range(ColumnNumber, intCounterA, ColumnNumber, intCounterB - 1, GrapeCity.Views.ElTabelle.RangeStyle.Cells))
intCounterA = intCounterB - 1
End If
Next
End Sub
[C#]
private void AutoColumnMerge(GrapeCity.Win.ElTabelle.Sheet TargetSheet, int ColumnNumber)
{
int intCounterA, intCounterB;
try
{
for (intCounterA = 0; intCounterA < TargetSheet.MaxRows; intCounterA++)
{
for (intCounterB = intCounterA; intCounterB < TargetSheet.MaxRows; intCounterB++)
{
if (TargetSheet[ColumnNumber,intCounterB].Value.ToString() !=
TargetSheet[ColumnNumber,intCounterA].Value.ToString()) break;
}
if (intCounterB > intCounterA + 1)
{
TargetSheet.Merge(new GrapeCity.Views.ElTabelle.Range(
ColumnNumber, intCounterA, ColumnNumber, intCounterB - 1,
GrapeCity.Views.ElTabelle.RangeStyle.Cells));
intCounterA = intCounterB - 1;
}
}
}
catch
{
}
}
{
int intCounterA, intCounterB;
try
{
for (intCounterA = 0; intCounterA < TargetSheet.MaxRows; intCounterA++)
{
for (intCounterB = intCounterA; intCounterB < TargetSheet.MaxRows; intCounterB++)
{
if (TargetSheet[ColumnNumber,intCounterB].Value.ToString() !=
TargetSheet[ColumnNumber,intCounterA].Value.ToString()) break;
}
if (intCounterB > intCounterA + 1)
{
TargetSheet.Merge(new GrapeCity.Views.ElTabelle.Range(
ColumnNumber, intCounterA, ColumnNumber, intCounterB - 1,
GrapeCity.Views.ElTabelle.RangeStyle.Cells));
intCounterA = intCounterB - 1;
}
}
}
catch
{
}
}
使い方
[Visual Basic]
'Sheet1の一列目を自動マージする
AutoColumnMerge(Sheet1, 0)
AutoColumnMerge(Sheet1, 0)
[C#]
//Sheet1の一列目を自動マージする
AutoColumnMerge(sheet1, 0);
AutoColumnMerge(sheet1, 0);
なお、AutoColumnMerge 関数ではセル型を考慮していない点に注意してください。
2003年12月22日以降のトライアル版、修正版にこのコードを使用したサンプルプロジェクトが含まれています。
キーワード
HowTo
この文書は、以前は次のFAQ IDで公開されていました : 3236