指定列の空白セルを見付け、そこから処理再開したい

UiPath初心者です。
以下のようなデータテーブルを使い、社内システムへ部品コードを入力後、塗装面積を抽出する繰り返し処理を作ろうとしています。
image

システムが混雑してる等の場合、robotがエラーとなり、
image
このような状態となります。
この場合、続きの部品コードGから検索再開をしたいのですが、
どのように設定すれば良いでしょうか。
解決策を教えて頂きたくよろしくお願いいたします。

こんにちは

単純には、ForEachRowの中で、当該行のEPI結果の中身が空白であれば、処理継続、
値があれば(既に処理済みなので)繰り返しをコンティニューアクティビティ等で
次の行へ進むようにすれば良いと思います。

2 Likes

おはようございます。
初心者なので飲み込みが悪く申し訳ございません。
繰り返しの中に条件分岐を入れて空白があるの方の処理へ、コンテニューアクティビティ(これは初めて知ったので今から勉強します)を入れていくと言うことでしょうか。

こんにちは

以下に実装イメージ添付します。

img20210319-1

1 Like

また、セルへの書き込み方なのですが、
現在は、
処理の最後に count=count+1 を入れて、

指定セルを以下の通りとしているのですが、こちらはどのようにすれば良いでしょうか。
“D” & (count + 2).ToString()

こんにちは

処理の最後に count=count+1 を入れて、

Continueの直前に、同様に加算するアクティビティを追加してください。
(あるいはFor each row のindexプロパティを使う手もあるかもしれません)

1 Like

イメージとアドバイスありがとうございます。
イメージは理解出来たのですが、

こちらが分かりませんでした。
すみません。

こんにちは

以下のようになります。

なおFor Each RowのIndexプロパティを使うと、この加算を自動的に処理してくれますので
これを使う場合は、count = count +1は不要になると思います。(既存のワークフローを修正する
必要が出てきますが)必須ではないので、上記方法でも問題ないと思います。

1 Like

ありがとうございます。
詳しい説明もありがとうござます。

こちらについては、ネット検索して勉強します!!
便利は昨日ですね!

システム側のエラー?等で、robotがエラーとなり止まった場合、
システム側を再起動させrobotを再開させると
続きからカウントしてくれて、続きのセルへ入力してくれるとの認識で合ってますでしょうか。

こんにちは

いいえ、上記の方法は、続きからカウントするのではなく、0からカウントして
処理済みのものをスキップする方法です。

もし0からカウントするのではなく、途中から処理を行いたい場合は、以下のいずれかになると
思います。

  1. EPI結果の列の要素数をカウントして、それをもとに次に処理すべき行を特定する。
  2. 現在の処理行番号をどこかに保存して、再実行時はそれを参照して、次に処理すべき行を特定する。

なおこの場合、処理の構成上、基本的にはFor Each系のループではなく、While系のループを
構成する必要があるかと思います。

1 Like

ありがとうございます。
空白を埋めていきたいだけなので、処理済みをスキップして続きから処理
と言う流れで間違いないのですが、
書込む先のセルの指定は、0からカウントしてしまうと、空白のセルには記入出来ないので、そこで不明になっておりました。
現在の処理のままで、空白セルから開始し、そのセルから入力開始するのは難しいでしょうか。

For Each RowのIndexプロパティ
につきましては、調べて分かりました!
教えて下さりありがとうございます。

こんにちは

書込む先のセルの指定は、0からカウントしてしまうと、空白のセルには記入出来ないので、そこで不明になっておりました。

0からカウントしますが、値が入っている所は、カウンターを1加えて、次の行に移るので
結果的に空白のものから書き込むことになります。

現在の処理がどのようなものかわかりませんので、可能でしたらワークフローを共有
いただくと良いかもしれません。

1 Like

ありがとうございます。

不明点が多いので添付します。
よろしくお願いいたします。
EPI繰り返し各行.xaml (41.7 KB)

こんにちは

添付いただいたものは、動作自体は問題ありませんでしょうか?

空白セルから開始する方法はいろいろありますが、例えば、以下になると思います。

データテーブルのフィルタで、EPI結果が空欄のものだけを抽出しています。(tempDtに格納)

rowsCount = 塗装面積0.Rows.Count

startIndex=rowsCount-tempDt.Rows.Count

としておいて、for each rowには tempDtを入力。

書き込むセルは "D" & (count +startIndex+ 2).ToString() のように既存入力分をオフセットします。

色々ご説明頂きありがとうございます。
先程添付した状態のものを数回動かしてみたのですが、
空白セルから検索開始し、そのままの状態で空白セルへ入力開始していました。

先程頂いた構造を当て込む前になるにも関わらず、
途中でEPIシステムを止めても、データテーブルの空白セルから検索を開始、
空白へ入力までしてくれました。