matrix99999
(matrix99999 )
1
2つのexcelがありkeyでマッチングをかけたいと考えています。
1 Excel application scope でA.xlsx呼ぶ
Read Rangeで読み込みdetatableをDT01に落とし込む
2 Excel application scope でB.xlsx呼ぶ
Read Rangeで読み込みdetatableをDT02に落とし込む
For each row
foreach row in DT02
データの有無を判定する
assgin
Vdata =
DT01.select(“ID= '” + row(0).ToString().PadLeft(7,"0"c) + “'”).Length
Vdataが1の場合、B.xlsxの項目"ID" と
A.xlsxの項目"row(0).ToString().PadLeft(7,"0"c) "があれば、 Vdata に1を返し、
B.xlsxの項目をA.xlsxの項目で更新する。
というものです。
IDは7桁なので、マッチングするとき0詰めをしています。
しかし、
assgin
Vdata =
DT01.select(“ID= '” + row(0).ToString().PadLeft(7,"0"c) + “'”).Length
でIDのカラムがありませんとなります。
色々考えましたがご教示いただければと思います。
kyd_has
2
A.xlsx->DT01
B.xlsx->DT02
とあり
B.xlsxの項目"ID" と
とあるため、IDの項目を持つテーブルはDT02と考えられます。
しかし、
DT01.select(“ID= '” + row(0).ToString().PadLeft(7,"0"c) + “’”).Length
とあるのですが、DT01(A.xlsx)にIDの列はありますでしょうか。
※テーブルの中身の確認は、デバッグ実行でブレークポイントを使用して、以下のように値の部分の虫眼鏡アイコンをクリックすることで、項目名と中身を確認することが出来ます。
1 Like
ありがとうございます。
カラムの名称でなく。read range するときのヘッダーの指定を誤っていました。
初歩的なことですみません。
1点教えていただきたいことがございます。
IDの値が数値で、アンマッチとなります。
もし可能であればご教示ください。
下記のように構文を変えたのですがうまくいきません。
DT01.select(“'” + row(11).ToString().PadLeft(4,"0"c) + “’ = '” + row(0).ToString().PadLeft(4,"0"c) + “'”).Length
kyd_has
4
仕様的に正しくなるのかどうか分かりませんが、むしろ
DT01.select(“ID= '” + row(0).ToString() + “’”).Length
とするのはどうでしょうか。。
1 Like
ありがとうございます。
DT01.select(“ID= '” + row(0).ToString() + “’”).Length
で試しましたがアンマッチでした。
write lineで"ID"値を確認しました。
参照する値は落ちています。
row(0).ToString() << DT01の値をwrite lineで確認したいのですが
可能でしたがやり方ご教示ください。
よろしくお願いします。
kyd_has
6
DT01の中身はデバッグ時に虫眼鏡で見ることが出来ると思います。
※write lineでなければならない事情があるのでしょうか。。。
row(0).ToString()の中身はwritelineで見ることが出来ると思いますが。。
※現状のxlsxファイル(抜粋で加工してもらえばよいと思いますが。。)を上げていただくことは出来ないでしょうか。
kyd_has
7
sample.zip (14.6 KB)
B.xlsxを更新する部分はありませんが、判定する部分までのものを作成してみました。
何か認識違いがありますでしょうか。
matrix99999
(matrix99999 )
8
手を煩わせ申し訳ございません。
参考にし問題なく動作しました。
ありがとうございます。
1 Like