左の表をデータテーブルに入れて、同じ商品IDがあれば商品名を結合、金額を合算、詳細を結合して、右の表のようなデータテーブルを作成したいです。
いい方法がありましたら教えてください。
こんにちは
以下お試しください
dt.AsEnumerable.GroupBy(Function(r) r("商品ID").ToString).Select(Function(g) dt.Clone.LoadDataRow({g.Key,String.Join(",",g.Select(Function(r) r("商品名").ToString())),g.Sum(Function(r) CDbl(r("金額"))),String.Join(",",g.Select(Function(r) r("詳細").ToString()))},False)).CopyToDataTable()
Sample
Sample20240329-1.zip (8.7 KB)
ご回答ありがとうございます!
できました!
ちなみに表の一番左に「年度」と「月」の列がある場合(RPAは毎月月末に実行)は、以下コードはどうなりますでしょうか?
dt.AsEnumerable.GroupBy(Function(r) r(“商品ID”).ToString).Select(Function(g) dt.Clone.LoadDataRow({g.Key,String.Join(“,”,g.Select(Function(r) r(“商品名”).ToString())),g.Sum(Function(r) CDbl(r(“金額”))),String.Join(“,”,g.Select(Function(r) r(“詳細”).ToString()))},False)).CopyToDataTable()
これだけでは要件が良くわかりませんので、入力例と、それに対する期待する出力を共有可能でしょうか?
年度、月ともすべて同じであれば以下になります。
dt.AsEnumerable.GroupBy(Function(r) r("商品ID").ToString).Select(Function(g) dt.Clone.LoadDataRow({g.First().Item("年度"),g.First().Item("月"),g.Key,String.Join(",",g.Select(Function(r) r("商品名").ToString())),g.Sum(Function(r) CDbl(r("金額"))),String.Join(",",g.Select(Function(r) r("詳細").ToString()))},False)).CopyToDataTable()
Sample20240329-1 (2).zip (8.9 KB)
ありがとうございます!
勉強になりました。