複雑な繰り返し処理で行き詰まっています。

はじめまして。
就活に向けてuipath を学習中です。

Excelのシートを読み込み、同名のセルに割り当てられた番号の最初と最後を取得し、出力をするワークフローを組んでいるのですが、うまく動いてくれません。

①ExcelのA1からA10にそれぞれ1〜10の番号が記入されていて、B列の1〜3には「しめじ」、4〜7には「まいたけ」、8〜10には「まつたけ」というように、異なる名称を入れています。

②B列で同名の最初と最後の番号を取得していきたいのですが、繰り返し処理が上手くいきません。(取得したいのは1と3→出力、4と7→出力、8と10→出力、11以降はデータがないので処理を終了)

すっかり煮詰まってしまったため、上記の内容で繰り返し処理を行う際の例をいただけるとありがたいです。

よろしくお願いいたします!

1)「範囲を読み込み」アクティビティを使って、対象シートから全データをDataTable型に読み込みます。
2)String型の変数「キー」をString.Emptyで初期化し、Int32型の変数「先頭行」と、変数「最終行」を0で初期化します

3)「繰り返し(各行)」アクティビティで、1)で読み込んだDataTableを指定します
⇒これを使うと、1回の繰り返し処理で1行ずつ移動してくれます。
4)条件分岐アクティビティで、Row.Item(1) (←しめじ、まいたけ、まつたけが格納されている列)が、キーと違うかを判定します。
4-1)違う場合(Row.Item(1) ≠キー)、更に「条件分岐」でキーがString.Emptyかどうか判定します。
4-1-1)String.Emptyの場合、なにもしない
4-1-2)String.Emptyでない場合、キー、先頭行、最終行を出力します。
4-1-3) 4-1-1、4-1-2処理後共通に、変数:先頭行、変数:最終行に、Row.Item(0)を代入し、変数:キーに、Row.Item(1) を代入します
4-2)同じ場合(Row.Item(1) =キー)、変数:最終行に、Row.Item(0)を代入する

文字だと分かりにくいですねm(__)m

1 Like

ご丁寧にありがとうございます!
いただいたアドバイスをもとに進めてみました。

手順がわかりやすく、どこで何を行っているか分かりもしたのですが、結果数値が出力されませんでした。
今回は出力された数値を同名Excelのシート2に出力しようと思いました(Aにキノコ名、BとCに番号のスタートと終わり)。

デバッグをしてみましたが、IfのElse側に流れていっている様子がありません(繰り返し処理も動いている様子がなく、変数が出力されることもないため)。
根本的な質問ばかりで申し訳ございません。
繰り返し処理の箇所、どこが間違っているか教えていただいてもよろしいでしょうか。
何卒、お願いいたします。

と、なれば、プロセスを圧縮して、いただけませんか?

1 Like

おー、ドラックアンドドロップで…:slight_smile:

今、出先ですので、今しばらくお待ち下さいますよう…

1 Like

お忙しい中、ありがとうございます。
教わった内容の理解を深めるよう、繰り返し処理の勉強をします。
宜しくお願いいたします。

拝見しました!

キー、先頭行、最終行は何のために用意したのかが理解されていないようでしたね。

それと、セルへ出力するシーンでは、"A2"と記述すると行位置が2固定になってしまうので、出力するタイミングで+1行しないといけません。ロボット側で変数:出力行を容易し、+1するようにしています。

ご笑覧ください。

きのこ実験.zip (28.7 キロバイト)

2 Likes

お忙しい中、ご教授いただきありがとうございます!

いただいた解答を繰り返し見て、なんとか理解ができました。
もう一度、はなっち様の解答を見ないでイチから組んでみようと思います。
UiPathは難しいですが、意味を理解できると面白いので、これからも頑張っていこうと思います。
ありがとうございました!

1 Like

条件分岐、繰り返しなどは、UiPathに限らず、プログラミングと言う目でみると、難しく、しかし基礎なので確りとマスタしていってくださいね。

解決に至った書き込みの解決先にチェックをして、クローズしてくださいませ。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.