【MICHIRU RPA 小技集】繰返し中に取得した値を1つにまとめる方法

繰返し処理中に取得したデータを、最後にまとめて使いたいことはありませんか?

例えば、こんな場面です。

  • Excelのデータを1行ずつチェックして、未入力の行番号をまとめて表示したい
  • 複数のファイルを順番に処理して、エラーが発生したファイル名をまとめて通知したい
  • 注文データを1件ずつ処理して、処理が完了した注文データだけ確認したい

このようなときは、取得したデータを上書きせず、1つのデータ保存先に追加していく方法が便利です。

今回は、この方法を使って、Excelの請求書一覧から、請求金額が未入力の行番号を最後にまとめてメッセージ表示する方法をご紹介します。

事前準備

Excelブック(請求書一覧)を準備する

下図のように、請求金額の一部が未入力となっている請求書一覧のExcelブックを任意の場所に保存します。

サンプルファイルは、こちらからダウンロードしてお使いください。
invoice_amount_check.xlsx (10KB)

セルの値を繰返し取得する自動操作セットを作成する

「繰返し」操作の中に「セルの値を取得」を設定して、Excelブック(請求書一覧)から1行ずつ順番に全15行分の請求金額を取得する自動操作セットを作成します。

すぐに試したい方はサンプル操作セットをダウンロードして、MICHIRU RPAにインポートしてお使いください。
請求金額未入力チェックサンプル.zip(4.4KB/Ver.1.4.6.0以降用)

※ このサンプル自動操作セットはVer.1.4.6.0以降のバージョンで使用できます。以前のバージョンでは使用できませんので、バージョンアップしてからお試しください。
※ 操作セットのインポート方法はこちらからご確認ください。
※ この記事を読み進めるだけでも設定方法を確認できます。

  • 次の3つのデータ保存先を作成します。
    • 繰返しカウント(データタイプ:数字)
    • 取得データ(データタイプ:文字)
    • 未入力の行リスト(データタイプ:文字)
  • 操作メニュー「関数/スクリプト」の「追加スクリプト」から「Excel操作」の「セルの値を取得」を選択して、次のように設定します。
    • 行番号:[@繰返しカウント] + 1
    • 列番号:B
    • 保存先:データ保存先「取得データ」



  • ②で設定した「セルの値を取得」の操作を囲むように、操作メニュー「実行順の制御」から「繰返し」を追加して、次のように設定します。
    • 回数:15
    • カウント:データ保存先「繰返しカウント」


  • 下図のように「コメント」を追加します。
    • No.2:請求金額を取得
    • No.4:請求金額が未入力なら行番号を取得
    • No.6:未入力の行番号を表示

設定方法

繰返し処理で取得した請求金額が空欄なら、その行番号をデータ保存先「未入力の行リスト」にまとめる設定を行います。

  1. No.1「繰返し」の直前に、操作メニュー「関数/スクリプト」から「データ保存」を追加し、次のように設定します。
    • 保存値:""または省略
    • 保存先:データ保存先「未入力の行リスト」

空の値をデータ保存先に上書きすることで、以前の実行で蓄積されていたデータを初期化できます。初期化せずに実行すると、データが残っていた場合に、今回取得したデータと混ざってしまう可能性があります。そのため、繰返し処理の前にこの「データ保存」の処理を入れておくことで、毎回新しいデータだけを蓄積でき、安定した運用につながります。

  1. No.5「コメント」の直後に、操作メニューの「関数/スクリプト」から「データ保存」を追加し、次のように設定します。
    • 保存値:[@未入力の行リスト]
      [@繰返しカウント] + 1 & "行目"
    • 保存先:データ保存先「未入力の行リスト」

A)これまでの取得データを蓄積しているデータ保存先と、B)その時点の行番号を改行で連結し、その結果をAに保存することで、これまでAに蓄積された行番号を残したまま、新しい行番号を末尾に追加できます。

  1. No.5「コメント」の直後に、操作メニューの「実行順の制御」から「条件移動」を追加して、次のように設定します。
    • 判定に使用するデータ:データ保存先「取得データ」
    • 条件の種類:文字:等しい場合(=)
    • 条件値:""または省略
    • 移動先操作番号 条件○:7
    • 移動先操作番号 条件×:8



      この設定により請求金額が未入力だった場合のみ、行番号を「未入力の行リスト」に追加します。
  2. No.9「コメント」の直後に、操作メニューの「通知」から「メッセージ表示」を追加して、「メッセージ表示」欄に、次のように入力します。
    • メッセージ表示:次の行が未入力です。
      [@未入力の行リスト]


Excelブック(請求書一覧)をアクティブにした状態で最初から実行すると、請求金額が未入力の行だけを「未入力の行リスト」に蓄積し、最後にメッセージ表示します。

補足事項

  • 繰返し処理を途中から再開する場合は、蓄積済みのデータが消えてしまわないよう、No.1「データ保存」で初期化を実行しないように注意しましょう。
  • 今回の方法では、「未入力の行リスト」が空の状態から最初の行番号を改行付きで追加するため、未入力行が見つかった場合、先頭に余分な改行が入ります。
    後続の処理に先頭の改行が不要な場合は、繰返しの終了後に、「文字列両端の空白等を削除」を追加して、途中の改行を残したまま先頭の不要な改行を削除するとよいでしょう。
    「文字列両端の空白等を削除」は、先頭の改行だけでなく、文字列の先頭・末尾にある空白、改行、Tabも削除します。これらを残す必要があるデータでは注意してください。
  • 今回は、②の「保存値」や④の「メッセージ表示」で直接改行を入力する方法を紹介しましたが、「保存値」で文字列を連結する際には、改行コード「vbCrLf」を使用したり、ダブルクォーテーション内に改行を入力したりする方法もあります。

    例えば、②の「保存値」は次のようにも記述できます。
    [@未入力の行リスト] & vbCrLf & [@繰返しカウント] + 1 & "行目"
    [@未入力の行リスト] & "
    " & [@繰返しカウント] + 1 & "行目"

  • 今回のケースでは、未入力のセルがなければ、「未入力の行リスト」には何も取得されず空の状態になります。空の状態ならメッセージ表示をしない、別のメッセージを表示するなど、活用シーンに合わせて条件分岐などの処理を追加するとよいでしょう。
  • 作成した改行区切りのリストを活用して、データ保存先に格納された要素の数だけ繰返す「リスト繰返し」を後続処理に取り入れることもできます。

まとめ

繰返し処理で取得したデータを、既存の値に追加して保存することで、複数の取得結果を上書きせずに1つのデータ保存先にまとめることができます。

まとめたデータは、入力漏れの確認やエラーの通知、処理結果の報告など、さまざまな場面で活用できます。

ぜひ日々の業務にお役立てください。

よかったらシェアしてね!
  • URLをコピーしました!
目次