2つのExcel数値の比較方法をご教示ください


#1

大変恐縮ですが、どなたかご存知の方、以下ご教示いただけないでしょうか。
下記作業が全く進まず、とても困っています。

<やりたいこと>
1.Excelファイル①のC列が、Excelファイル②のC列と一致する場合、Excelファイル①のD列の数値とExcelファイル②のD列の数値を比較

2.もしExcelファイル①のD列数値 = Excelファイル②のD列数値の場合、別のExcelファイル③のX列に”Match”と入力

3.もしExcelファイル①のD列数値≠Excelファイル②のD列数値の場合、別のExcelファイル③のX列に”Unmatch”と入力

<状況>
・そもそも、上記を実施する際に、Excelファイル①、②、③の全てを、”Read Range"しておく必要があるのか、もしYesの場合、Read Rangeはシート全てに実施すべきなのか?等もよくわかっておりません。
・また、”Match / Unmatch”と入力した後、Excelファイル③をどのように名前を変えて保存すれば良いかも分かっておりません。

初心者なので色々と分かっておらず申し訳ありませんが、
どなたかご回答いただけますと幸いです。

よろしくお願い致します。


#2

他にスマートなやり方があるかもしれませんが、
簡単に実装しようとすると①②③それぞれRead Rangeを実施し、
DataTable型の変数を3個取得しておくのが良いと思います。

その場合シートを全てに実施すべきかどうか、ですが、
動作が重いというようなことがなければ、全部読み込んでもよいと思います。
(記載頂いている内容であれば、全部読み込みでなくても実装可能)

"Match / Unmatch"の記載後の名前を変えて保存ですが
Excel Application Scopeを改めて使用し、
テキストボックス欄にファイル名を入力、(ファイル名は””の間に記載)
Excel Application ScopeのDoの中に
Write Rangeを使用し、"Match / Unmatch"が記載されているData Table型の変数を指定

これで行けると思うのですが如何でしょうか。


#3

Naokioda様

お返事いただき誠にありがとうございます。
初歩的なことで大変恐縮ですが、
各エクセルからDataTable型の変数を取得するところまではできたのですが、
その後、特定列の値を1行ずつ比較し、一致しているならばファイルに書き込みをする、という作業をどう進めて良いか検討がついておりません。

各種サイトやe-learning等も拝見したのですがよく分からず、
ステップをご教示いただけないでしょうか。

大変恐縮ですが、何卒よろしくお願い致します。


#4

特定列の値を1行ずつ比較し、一致しているならばファイルに書き込みをする、という作業
どこまでできて、どこがわからないのか正確に記述してください。

・取得したDataTable型の変数から、特定の値を一行ずつ取得する
まず、"特定の値を一行ずつ"という表現がわかりにくいです。

特定の行の特定の列の値を取得する方法は、
UiPath公式のe-learningを見たのなら、 Level 1 - Foundation Training(日本語)のレッスン9 演習1 がそのままの回答になると思います。
サンプルもそこでダウンロードできます。


#5

yamada様

どのようなデータを扱っているのかが分からないので、
3エクセル共、行数が同じ、かつ3エクセルとも1シート内に表がひとつという前提で考えますね。

Excel Application Scopeの後、Read Rangeを使用して
Data Table型の変数としてエクセルデータを取得する事まではできたという事ですね。
(1列目がヘッダー情報の場合は、プロパティでAdd Headerにチェックを入れてください)

それであれば、カウンター変数をAssign アクティビティで初期値を2にした後
for each rowアクティビティを使用するのが良いです。

for each row アクティビティは、自動で行数分ループを回してくれるので、
ループの最後にAssignアクティビティで、カウンター変数を1づつ足しこめば、
順番に比較をすることができます。

Read Cell でデータの取得、Write Cellでデータの書き込みをします。
Read Cell プロパティのCell、Write CellのプロパティのRangeに
それぞれ"C"+カウンター変数名 と指定すれば、任意のデータにアクセスできるはずです。

Read Cell のoutputプロパティに変数を入れて、その変数を使って
if 文で比較すれば、
<やりたいこと>
1.Excelファイル①のC列が、Excelファイル②のC列と一致する場合、Excelファイル①のD列の数値とExcelファイル②のD列の数値を比較
2.もしExcelファイル①のD列数値 = Excelファイル②のD列数値の場合、別のExcelファイル③のX列に”Match”と入力
3.もしExcelファイル①のD列数値≠Excelファイル②のD列数値の場合、別のExcelファイル③のX列に”Unmatch”と入力

上記1,2,3はできると思います。

頑張ってください。