複数項目の紐づけについて

お世話になっております。
2つのExcelの内容を1つのIDで紐づけして日付と金額を入力したいです。
具体的には添付のExcelの【一覧】のIDと【予定表】の番号を紐づけして、予定表の方に日付と金額を入力するようにしたいと思っています。
予定表の方が実装した場合の仕上がりイメージです。

この場合どのようにすればよいでしょうか。

こんにちは

もっとも単純には2重ループですね。
例えば以下のようになります。

ありがとうございます。
こちらの方法ですが、件数が多いと処理時間がかなり長くなりますか?

二重ループなので効率はあまり良くないです。
項目の重複がないようであれば、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列に書き込みたいのですが、他の所が書き換わってしまいます。
認識が間違っていたらすみません。

この部分はDataTableの一番左の列からすべての列を記載しています。
表が大きく、特定の部分のみを書き換えたいのであれば、この代入アクティビティをいかに置き換えた方が良いかもしれません。

ありがとうございます。
このようなエラーメッセージが表示されるのですが、なぜでしょう?

こんにちは

ワークフロー中にエラー残っていませんでしょうか?

エラーのところを確認してもエラーはありません。

式の右辺を

CType(dict(CurrentRow("番号").ToString).Item("金額"),ExcelValue)

のようにすると改善しますでしょうか?

何度もすみません。
さきほどのエラーは消えたのですが、別のエラーが出ました。

環境の情報を共有いただきたいのですが、Studio, Excelパッケージ、Systemパッケージのバージョンはいくつをお使いでしょうか?

Studioのパッケージはこれで合ってますでしょうか?

エクセルはバージョン2509です。

こんにちは

どうもStudio2025.10.0の問題(Assignの問題)のような感じなので、以下の様にForEachExcelRowの代わりに、ReadRange, ForEachRow, WriteRangeで試せますでしょうか?

お世話になっております。
返信が大変遅くなり申し訳ございません。
自分で色々試してみたのですがなかなかうまくいきません。
現状できているものを添付いたしますので、教えていただいたことと合っているか見ていただけますでしょうか。
よろしくお願いいたします。

伝票処理.zip (205.6 KB)

手元に対象ファイルがないので、ワークフローをみただけになりますが、
予定表の表自体はワークシートのA4セルから始まっていますでしょうか?

そうであれば、範囲読み込み、書き込みの部分の指定を

Excel.Sheet("予定表").Range("A4")

のようにしてもらえますでしょうか?

ありがとうございます。
その方法も試してみてはいたのですがうまくいかずです。
一応先ほどのZIPファイルの中に対象ファイルも入れていたのですが、対象ファイルはこちらになります。
test.zip (19.9 KB)

.Range(“A4”)を入れたのがこちらです。
伝票処理.zip (185.6 KB)

想定していない所に書き込まれるのでどうしてかなと思っています。

失礼しました。testフォルダ以下にありました。Range追加した結果が以下になります。

書き込み側も同様に指定してみてください。