Continuing the discussion from DTの集計について(任意の列の文字列が一致する行の合計)合計列が300列あります:
お世話になっております。
先日、こちらのトピックで教えて頂いた式を使い、作成していたのですが、
以下のように、合計値を求めるセルの中に空白セルを含む場合、
このようなエラーとなりました。
解決策を教えて頂きたく、よろしくお願い致します。
元データ
希望する完成形
Continuing the discussion from DTの集計について(任意の列の文字列が一致する行の合計)合計列が300列あります:
お世話になっております。
先日、こちらのトピックで教えて頂いた式を使い、作成していたのですが、
以下のように、合計値を求めるセルの中に空白セルを含む場合、
このようなエラーとなりました。
解決策を教えて頂きたく、よろしくお願い致します。
元データ
希望する完成形
こんにちは
空欄を0扱いにしてよいなら
dt.AsEnumerable.GroupBy(Function(r) r("果物").ToString()).Select(Function(g) dt.Clone.LoadDataRow({cobj(g.Key)}.Concat(dt.Columns.Cast(Of DataColumn).Skip(1).Select(Function(dc) cobj(g.Sum(Function(r) if(Int32.TryParse(r(dc.ColumnName).ToString, new int32),CInt(r(dc.ColumnName).ToString),0))))).ToArray,False)).CopyToDataTable()
になります。ただし上記はシート上0と表示されます。0の部分を空欄にする必要ありますでしょうか?
ありがとうございます。
無事に計算できました。
この計算後のリストを使い、さらに集計をしていく上で
0があった方が良いのか、逆に0が悪さをしてしまうのか、現時点では
判断がつかないので、
ご面倒をお掛けしますが、空白の際の式も教えて頂けますでしょうか。
少し冗長ですがいかがでしょうか
dt.AsEnumerable.GroupBy(Function(r) r("果物").ToString()).Select(Function(g) dt.Clone.LoadDataRow({cobj(g.Key)}.Concat(dt.Columns.Cast(Of DataColumn).Skip(1).Select(Function(dc) if(g.Sum(Function(r) if(Int32.TryParse(r(dc.ColumnName).ToString, new int32),CInt(r(dc.ColumnName).ToString),0))=0,cobj(""),cobj(g.Sum(Function(r) if(Int32.TryParse(r(dc.ColumnName).ToString, new int32),CInt(r(dc.ColumnName).ToString),0)))))).ToArray,False)).CopyToDataTable()
いつもありがとうございます。
0が消えていることが確認できました。
本当にいつもありがとうございます。
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.