複数条件で集計する

下記の情報から、得意先と取引区分名が同じもので入金金額の合計をしたいと考えております。
似たようなトピックを見つけたので、それを応用してやってみようと思いましたが、うまくできませんでした。
得意先名は複数ありますが、取引区分名は振込と手数料しかありません。
①を②のように集計できるよう、ご教示お願いいたします。


|得意先|取引区分名|入金金額|
|A社|振込|5802|
|A社|手数料|380|
|B社|振込|31053|
|C社|振込|4243|
|D社|振込|33451|
|A社|振込|681913|
|A社|手数料|550|
|C社|振込|188083|



|得意先|取引区分名|入金金額|
|A社|振込|687715|
|A社|手数料|930|
|B社|振込|31053|
|C社|振込|192326|
|D社|振込|33451|

ベストプラクティスはデータテーブルに読み込んでLINQで集計しちゃうことでしょうが、RPAっぽくやるならEXCELにデータ持ち込んで得意先、区分で重複排除した行列を作って、できた表にSUMIFSで集計するような列を作ってしまうとかもできそうですね。人の手だとどうやるかを再現するって考えるといろんなやり方があると思います。

こんにちは

LINQ GroupByでの実装例です。

dt = dt.AsEnumerable.GroupBy(Function(r) Tuple.Create(r("得意先").ToString,r("取引区分名").ToString)).Select(Function(g) dt.Clone.LoadDataRow({g.Key.Item1,g.Key.Item2,g.Sum(Function(r) CInt(r("入金金額").ToString))},False)).CopyToDataTable()

Sample20230705-1aL.zip (2.8 KB)

Regards,

Yoichiさん
実装例まで貼っていただき、ありがとうございました。
でも、「式は配列またはメソッドではありません。引数リストを指定することはできません」というエラーが出てしまいました。なにを直せばいいのでしょうか?
ちなみに代入のdt部分を実際のdt変数に書き換えただけです。
お忙しい中恐れ入りますが、ご回答いただきますようよろしくお願いいたします。

上記のサンプルでエラーが出ていますでしょうか?
あるいはご自身で作成したものでしょうか?
いずれにしましてもエラーとなっている部分のスクリーンショット等共有いただくと良いかと思います。

申し訳ありません。
初歩的なミスで、こちらで作成したものの変数の型が間違っておりました。
無事、集計ができるようになりました。
どうもありがとうございました。

minamiさん
アドバイスありがとうございました。
初心者の為、LINQを調べてみたのですが、なかなか難しく
実装例を紹介してくださったYoichiさんの方法で無事解決することができました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.