お世話になっております。
2つのExcelの内容を1つのIDで紐づけして日付と金額を入力したいです。
具体的には添付のExcelの【一覧】のIDと【予定表】の番号を紐づけして、予定表の方に日付と金額を入力するようにしたいと思っています。
予定表の方が実装した場合の仕上がりイメージです。
この場合どのようにすればよいでしょうか。
お世話になっております。
2つのExcelの内容を1つのIDで紐づけして日付と金額を入力したいです。
具体的には添付のExcelの【一覧】のIDと【予定表】の番号を紐づけして、予定表の方に日付と金額を入力するようにしたいと思っています。
予定表の方が実装した場合の仕上がりイメージです。
この場合どのようにすればよいでしょうか。
ありがとうございます。
こちらの方法ですが、件数が多いと処理時間がかなり長くなりますか?
二重ループなので効率はあまり良くないです。
項目の重複がないようであれば、LINQ使ってDictionary化→DataTable更新等の方法もとることができます。
それぞれ何件くらいでしょうか?
書き込み先(予定表)は100件以上データがあることもあります。
一覧の方は多いと30件ぐらいです。
この程度でしたら2重ループでも処理時間が問題となることはないように思えますが、Dcitionary使うと以下のような感じになると思います。
dict = dtIchiranhyo.AsEnumerable().Where(Function(r) not String.IsNullOrEmpty(r("ID").ToString)).ToDictionary(Function(r) r("ID").ToString,Function(r) r)
dtYoteihyo = dtYoteihyo.AsEnumerable.Select(Function(r) if(dict.ContainsKey(r("番号").ToString),dtYoteihyo.Clone.LoadDataRow({r(0),r(1),r(2),dict(r("番号").ToString).Item("日付"),dict(r("番号").ToString).Item("金額")},false) ,r)).CopyToDataTable()
ありがとうございます。
2つめのAssignの「LoadDataRow({r(0),r(1),r(2),」で書き込む行を指定しているのだと思うのですが、どこから数えて0、1、2でしょうか?
実際にはT列、U列に書き込みたいのですが、他の所が書き換わってしまいます。
認識が間違っていたらすみません。
こんにちは
ワークフロー中にエラー残っていませんでしょうか?
エラーのところを確認してもエラーはありません。
式の右辺を
CType(dict(CurrentRow("番号").ToString).Item("金額"),ExcelValue)
のようにすると改善しますでしょうか?
環境の情報を共有いただきたいのですが、Studio, Excelパッケージ、Systemパッケージのバージョンはいくつをお使いでしょうか?
こんにちは
どうもStudio2025.10.0の問題(Assignの問題)のような感じなので、以下の様にForEachExcelRowの代わりに、ReadRange, ForEachRow, WriteRangeで試せますでしょうか?
お世話になっております。
返信が大変遅くなり申し訳ございません。
自分で色々試してみたのですがなかなかうまくいきません。
現状できているものを添付いたしますので、教えていただいたことと合っているか見ていただけますでしょうか。
よろしくお願いいたします。
伝票処理.zip (205.6 KB)
手元に対象ファイルがないので、ワークフローをみただけになりますが、
予定表の表自体はワークシートのA4セルから始まっていますでしょうか?
そうであれば、範囲読み込み、書き込みの部分の指定を
Excel.Sheet("予定表").Range("A4")
のようにしてもらえますでしょうか?