【UiPath入門】第9回:繰り返し処理(1)~「100行のデータ」を1行ずつ捌く魔法~

こんにちは!UiPath メンターです。

前回は、Excelの表データを「データテーブル」という一つの大きな箱に読み込むところまで行いました。
しかし、今のままではロボットはデータを持っているだけで、何もしてくれません。

「このリストの1行目を見て、システムに入力する」
「終わったら2行目を見て、入力する」
「それを最後の行まで繰り返す」

この「繰り返し(ループ)」こそが、ロボットが最も得意とする作業です。
今回は、読み込んだデータを1行ずつ取り出して処理する「For Each(フォー・イーチ)」の魔法を使いこなしましょう。

1. 使うアクティビティ:「繰り返し (データ テーブルの各行)」

前回作成した、データ読み込み後のフローの続きに配置します。
使用するのは、データの行数分だけ同じ動きを繰り返してくれるアクティビティです。

手順

  1. [アクティビティ] パネルで「繰り返し」と検索します。
  2. いくつか出てきますが、[繰り返し (データ テーブルの各行) (For Each Row in Data Table)] を選びます。
    ※似た名前の「Excelの各行」もありますが、今回は前回作成した変数を使うため「データテーブル」の方を使います。
  3. ドラッグ&ドロップで配置します。

2. どのデータを繰り返す?

アクティビティを配置すると、以下のような設定欄があります。

  • [次のデータ テーブルの各行 (In data table)]:ここに対象のデータを指定します。

入力欄をクリックし、前回作成した変数の名前(例:dt_SalesData)を入力します。
これでロボットは、「ああ、この箱に入っているデータの数だけ回ればいいんだな」と理解します。

3. 最重要概念:「CurrentRow」とは?

このアクティビティの中に、[現在の行 (CurrentRow)] という項目があることに注目してください。

ここが初心者が一番混乱するポイントですが、イメージすれば簡単です。

  • dt_SalesData: 全員の履歴書が入った「分厚いファイル」。
  • CurrentRow: そこから1枚だけ取り出して、今まさに手に持っている「1枚の履歴書」。

ロボットは、1回目のループでは1行目を CurrentRow に入れます。
2回目のループでは、中身を捨てて2行目を CurrentRow に入れ直します。

つまり、ループの中(シーケンス)では、常に CurrentRow に対して命令すればよい」 のです。

4. 具体的なデータを取り出す

では、今手に持っている行(CurrentRow)から、「商品名」や「金額」といった具体的な列のデータを取り出してみましょう。

ループの枠(シーケンス)の中に、テスト用に [メッセージ ボックス] を置きます。
そして、表示させる文字の欄に以下のように記述します。

CurrentRow("商品名").ToString

式の解説

  • CurrentRow : 今の行のデータを見るよ。
  • ("商品名") : その中の「商品名」という列(ヘッダー)の値が欲しいよ。
    ※Excelの1行目に書かれている項目名を、正確にダブルクォーテーションで囲んで指定します。
  • .ToString : 文字列として扱ってね。

💡 メンターからのアドバイス:列の指定方法

列を指定するときは、上記のように 列の名前(ヘッダー名) で指定するのが一番おすすめです。
「0番目の列」「1番目の列」と番号で指定する方法もありますが、Excelの列の順番が変わった瞬間にロボットが壊れてしまうからです。

5. 実行して感動しよう

設定ができたら [ファイルをデバッグ] してみましょう。

Excelにデータが3行あれば、メッセージボックスが3回表示されます。
1回目は「りんご」、OKを押すと2回目は「みかん」、次は「バナナ」……。

どうですか?
たった1つのメッセージボックスしか置いていないのに、ロボットが勝手に中身を書き換えながら処理してくれています。
これがループ処理の威力です!

今回のまとめ

  • データを1行ずつ処理するには [繰り返し (データ テーブルの各行)] を使う。
  • ループの中では CurrentRow が「今処理している行」を指す。
  • 具体的な値は CurrentRow("列名").ToString という式で取り出す。

⚠️ つまづきポイント:「列が見つかりません」エラー

実行時に「Column ‘商品名’ does not belong to table…」というエラーが出たら、以下の2つを確認してください。
1. 式に入力した列名(”商品名”)に、余計なスペースが入っていたり、漢字が間違っていたりしませんか?
2. 前回学んだ「範囲を読み込み」の設定で、[ヘッダーあり] のチェックが外れていませんか?

次回は、このループ処理をさらに賢くします。
「金額が1000円以上のときだけ処理する」「空欄の場合はスキップする」といった、「条件分岐(If)」を組み合わせます。
これで、人間の判断業務も自動化できるようになりますよ!

タイトルとURLをコピーしました