表示されているセルの値の合計を取得するには?
対象製品
MultiRow for Windows Forms 10.0J
詳細
セルの値の合計を取得するとき、非表示の行を除外するにはいくつかの方法があります。
サマリ型セルを使用する
フッタにサマリ型セルを配置して合計を表示します。非表示の行はサマリ型セルのオプションで除外指定できます。
[Visual Basic]
[C#]
ループを使用する
ループを使用してセルの値を集計します。
[Visual Basic]
[C#]
LINQの使用
LINQを使用して合計を取得することができます。
[Visual Basic]
[C#]
サマリ型セルを使用する
フッタにサマリ型セルを配置して合計を表示します。非表示の行はサマリ型セルのオプションで除外指定できます。
[Visual Basic]
Imports GrapeCity.Win.MultiRow Me.GcMultiRow1.AllowUserToAddRows = False Dim template1 As Template = Template.Default Dim columnFooterSection1 As New ColumnFooterSection Dim summaryCell1 As New SummaryCell() summaryCell1.Calculation = New MathStatistics(StatisticsType.Sum, 0, True) columnFooterSection1.Cells.Add(summaryCell1) template1.ColumnFooters.Add(columnFooterSection1) Me.GcMultiRow1.Template = template1 Me.GcMultiRow1.RowCount = 10 For index As Integer = 0 To GcMultiRow1.RowCount - 1 Me.GcMultiRow1.SetValue(index, 0, index + 1) Next Me.GcMultiRow1.Rows(0).Visible = False Me.GcMultiRow1.Rows(1).Visible = False
[C#]
this.gcMultiRow1.AllowUserToAddRows = false; Template template1 = Template.Default; ColumnFooterSection columnFooterSection1 = new ColumnFooterSection(); SummaryCell summaryCell1 = new SummaryCell(); summaryCell1.Calculation = new MathStatistics(StatisticsType.Sum, 0, true); columnFooterSection1.Cells.Add(summaryCell1); template1.ColumnFooters.Add(columnFooterSection1); this.gcMultiRow1.Template = template1; this.gcMultiRow1.RowCount = 10; for (int i = 0; i < this.gcMultiRow1.RowCount; i++) { this.gcMultiRow1.SetValue(i, 0, i + 1); } this.gcMultiRow1.Rows[0].Visible = false; this.gcMultiRow1.Rows[1].Visible = false;
ループを使用する
ループを使用してセルの値を集計します。
[Visual Basic]
Imports GrapeCity.Win.MultiRow Me.GcMultiRow1.Template = Template.Default Me.GcMultiRow1.AllowUserToAddRows = False Me.GcMultiRow1.RowCount = 10 Me.GcMultiRow1.Rows(0).Visible = False Me.GcMultiRow1.Rows(1).Visible = False For index As Integer = 0 To GcMultiRow1.RowCount - 1 Me.GcMultiRow1.SetValue(index, 0, index + 1) Next Dim sum As Integer = 0 For index As Integer = 0 To Me.GcMultiRow1.RowCount - 1 If Me.GcMultiRow1.Rows.GetRowState(index) And MultiRowElementStates.Visible = MultiRowElementStates.Visible Then sum += Me.GcMultiRow1.GetValue(index, 0) End If Next Console.WriteLine("表示行の合計: {0}", sum)
[C#]
using GrapeCity.Win.MultiRow; this.gcMultiRow1.Template = Template.Default; this.gcMultiRow1.AllowUserToAddRows = false; this.gcMultiRow1.RowCount = 10; this.gcMultiRow1.Rows[0].Visible = false; this.gcMultiRow1.Rows[1].Visible = false; for (int i = 0; i < this.gcMultiRow1.RowCount; i++) { this.gcMultiRow1.SetValue(i, 0, i + 1); } int sum = 0; for (int i = 0; i < this.gcMultiRow1.RowCount; i++) { if ((this.gcMultiRow1.Rows.GetRowState(i) & MultiRowElementStates.Visible) == MultiRowElementStates.Visible) { sum += (int)this.gcMultiRow1.GetValue(i, 0); } } Console.WriteLine("合計: {0}", sum);
LINQの使用
LINQを使用して合計を取得することができます。
[Visual Basic]
Imports GrapeCity.Win.MultiRow Me.GcMultiRow1.Template = Template.Default Me.GcMultiRow1.AllowUserToAddRows = False Me.GcMultiRow1.RowCount = 10 Me.GcMultiRow1.Rows(0).Visible = False Me.GcMultiRow1.Rows(1).Visible = False For index As Integer = 0 To GcMultiRow1.RowCount - 1 Me.GcMultiRow1.SetValue(index, 0, index + 1) Next ' 合計 Dim visibleRows = Me.GcMultiRow1.Rows.Where(Function(row) row.Visible) Console.WriteLine("表示されている行数: {0}", visibleRows.Count) Dim cellValues = visibleRows.Select(Of Integer)(Function(row) row.Cells(0).Value) Dim sum = cellValues.Sum() Console.WriteLine("合計: {0}", sum) ' 平均 Dim average = Me.GcMultiRow1.Rows.Where(Function(row) Row.Visible).Select(Of Integer)(Function(row) row.Cells(0).Value).Average() Console.WriteLine("平均: {0}", average)
[C#]
using GrapeCity.Win.MultiRow; this.gcMultiRow1.Template = Template.Default; this.gcMultiRow1.AllowUserToAddRows = false; this.gcMultiRow1.RowCount = 10; this.gcMultiRow1.Rows[0].Visible = false; this.gcMultiRow1.Rows[1].Visible = false; for (int i = 0; i < this.gcMultiRow1.RowCount; i++) { this.gcMultiRow1.SetValue(i, 0, i + 1); } var visibleRows = this.gcMultiRow1.Rows.Where(row => row.Visible); Console.WriteLine("表示されている行数: {0}", visibleRows.Count()); var cellValues = visibleRows.Select<Row, int>(row => (int)row.Cells[0].Value); var sum = cellValues.Sum(); Console.WriteLine("合計: {0}", sum); var average = this.gcMultiRow1.Rows.Where(row => row.Visible).Select(row => (int)row.Cells[0].Value).Average(); Console.WriteLine("平均: {0}", average);