y.c
(BYC)
1
いつもお世話になっております。
現在、CSVデータを確認して、売り上げの赤黒伝票が揃っていない、赤伝票のみの場合にその取引IDを取得するロボットを作成しています。
<サンプル>
D列:1が黒、2が赤、それ以外が0
E列:D列が「2」のもので、取り消した元の黒伝票の取引IDが表示されている
現在、①の仕様まで作ってみたのですが、確認で上手くいっていないのと、その先の設計に悩んでいます。
①赤伝票のD列(打消取引ID)を全て取得して変数に格納したが、変数をダイレクトメッセージやテキスト書き込みで表示すると想定と違うものがでる。
②サンプルのCSVでいうと、最終的には赤伝票のみしか存在していない17行目、18行目のA列(取引ID)の「3000」を取得して、変数に格納したいのですが、そこまでのフローが上手く設計できず、頭を悩ませています。
データは、1明細につき1行になるので、取引IDや打消取引IDは重複するものが出てくるので、最終的には重複を削除したA列(取引ID)を変数に格納したいです。サンプルでいうと、3000が2行ありますが、変数としては3000を1つで入れたい。
説明が下手で申し訳ないのですが、アドバイスいただけますと幸いです。
Main.xaml (15.9 KB)
取引データ_サンプル.xlsx (11.7 KB)
尚、元データはcsvなのですが、こちらに上げられなかったので、xlsxでサンプルは添付します。
Yoichi
(Yoichi)
2
こんにちは
以下でいかがでしょうか?result.xlsxに書き出しています。
arrDr = dt.AsEnumerable.Where(Function(r) r("打消区分(0:通常、1:打消元レコード、2:打消レコード)").ToString<>"0").GroupBy(Function(r) Tuple.Create({r("取引ID").ToString,r("打消取引ID").ToString}.OrderBy(Function(s) s).First,{r("取引ID").ToString,r("打消取引ID").ToString}.OrderBy(Function(s) s).Last,r("商品"))).Where(Function(g) g.Sum(Function(r) CInt(r("単価値引き前小計")))<>0).SelectMany(Function(g) g).ToArray
Sample20230831-3L.zip (12.3 KB)
y.c
(BYC)
3
Yoichi様、いつもありがとうございます。
元データがCSVなので、このまま「Read Range Workbook」は使えないと思うのですが、CSVデータで同様の動きは可能でしょうか?
Yoichi
(Yoichi)
4
元データがCSVなので、このまま「Read Range Workbook」は使えないと思うのですが、CSVデータで同様の動きは可能でしょうか?
一度ReadCSVアクティビティに置き換えて試してみてはと思います。
y.c
(BYC)
5
ありがとうございます。
ReadCSVに置き換えをしてみたのですが、最初のAssignで下記エラーがでてしまい。
Main Sequence: 値を Null にすることはできません。
パラメーター名:source
ReadCSVの設定に問題があるのでしょうか?

Yoichi
(Yoichi)
6
出力のDataTableプロパティにdtを設定してみてください
y.c
(BYC)
7
ありがとうございます!無事に動きました。
一旦これで、重複した「取引ID」の削除を検討してみようと思います。
ちょっとまだ細かい所までいただいた内容理解しきれてないので、その辺も確認していきたいと思います。大変助かりました!
system
(system)
Closed
8
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.