★質問・概要
Q.Excelの行を繰り返し処理していますが、データの件数が毎回異なります。設定した行数まで処理を続けず、途中の空白行でループを終了することはできますか?
★回答
はい、できます。JobAutoのExcel操作で「行の繰り返し」アクションを使用し、必ずデータが入っている列が空白になったら「繰り返し処理をやめる」ように設定します。
「行の繰り返し」で取得した値を変数に格納し、繰り返し範囲内に配置した「変数の値を評価」アクションで空白かどうかを判定します。空白の場合に繰り返し処理を終了させることで、残りの行に対する不要な処理を行わずに済みます。
操作例はExcelループの終わり方(動画付き)でも確認できます。
1.空白行でExcelのループを終了する設定
- Excel操作の「行の繰り返し」アクションで、対象のブック・シート・セル範囲を設定します。
- 「列名と変数の対比表」で、各行に必ず入力されている列(例:商品コード)をJobAutoの変数へ格納するように設定します。
- 行ループの繰り返し範囲内で、行の値を取得した後に「変数の値を評価」アクションを配置します。
- 左辺に商品コードなどの変数を指定し、条件式を「=」、右辺を空白として判定します。
- 空白と判定した場合は「ハンドリング処理」を実行し、その「対処」を「繰り返し処理をやめる」に設定します。
- 空白でない場合は「継続処理」とし、必要な入力や転記などの処理を続けます。
- 少ない件数のExcelで全実行し、空白行に達した時点でループが終了することを確認します。
「変数の値を評価」の設定項目は、JobAutoで変数を判定して繰り返し処理をやめる方法をご確認ください。
2.判定に使用する列の選び方
空白判定には、データが存在する行では必ず値が入っている列を使用してください。たとえば、商品コードがすべての明細行に入力されるExcelなら、商品コードの値を判定します。
| 商品コード(判定対象) | 商品名 | 処理 |
|---|---|---|
| A001 | 商品A | 処理を続ける |
| A002 | 商品B | 処理を続ける |
| (空白) | (空白) | 繰り返し処理を終了する |
途中に空白が含まれることのある列を判定対象にすると、まだ処理すべき行が残っていても、その時点でループが終わってしまいます。途中に空白行があっても後続行にデータが存在するExcelには、この終了条件をそのまま使用しないでください。
3.「繰り返し処理をやめる」と「次の繰り返し処理に移動する」の違い
| 設定 | 処理内容 |
|---|---|
| 繰り返し処理をやめる | 繰り返し自体を終了し、残りの行を処理しません。 |
| 次の繰り返し処理に移動する | 現在の行の残りの処理を行わず、次の行へ進みます。 |
今回のように、データの終わりを検知して残りのループを終了したい場合は「繰り返し処理をやめる」を使用します。特定の1行だけを飛ばしたい場合とは設定が異なります。
4.ループが途中で終了しない場合の確認事項
- 変数の値:「列名と変数の対比表」で、判定対象の列と変数が正しく対応しているか確認します。
- 判定する位置:「変数の値を評価」がExcelの行ループ内にあり、行データ取得後の値を判定しているか確認します。
- 条件式:左辺の変数と空白の比較条件が想定どおりになっているか確認します。
- 判定結果の処理:空白の場合に「ハンドリング処理」、空白でない場合に「継続処理」を選択しているか確認します。
- ハンドリング処理:「対処」が「繰り返し処理をやめる」になっているか確認します。
処理対象の行数が毎回変わる場合は、「行の繰り返し」の「データ範囲設定」も確認してください。現在のマニュアルでは、データ量が変わる場合に「範囲を拡張する」を選択できます。ただし、空白を終了条件にする方法とは別の設定のため、目的に合わせて選択します。
関連するマニュアル・ナレッジ
- Excelループの終わり方:繰り返しを意図的に終了する動画付きサンプル
- JobAutoで変数を判定して繰り返し処理をやめる方法:条件設定・ハンドリング処理
- JobAutoでExcelの行を繰り返し処理する方法|ヘッダーあり:列名と変数の対比表・データ範囲設定
- JobAutoで変数を判定して次の繰り返し処理に移動する方法:特定の行だけをスキップする場合
