Excelの売上明細データを使って、「特定の条件を満たしたデータだけを別ファイルに転記したい」と思ったことはありませんか?
たとえば、売上数量が5以上の商品だけを集計したいとき、手作業で転記するのは大変です。
そんな時に便利なのが、**Power Automate Desktop(PAD)**です。
今回は、**「売上数量が5以上の行だけを別のExcelファイルに自動で転記する方法」**を、PADの操作とあわせて詳しく解説します。前提知識として、「反復処理(ループ)」の基本がわかっているとスムーズです。
使用するファイル:売上明細.xlsx
以下のようなデータが入力されているExcelファイルを使用します。
商品名 単価 売上数量 金額
A商品 500 3 1500
B商品 800 7 5600
C商品 1200 9 10800
転記先には、**列名だけが記載された空のExcelファイル(転記先.xlsx)**を用意しておきます。
ステップ1:転記先ファイルを開く
まずは、出力先となる転記ファイルを開きます。
- 「Excelの起動」アクションを追加
- 「次のドキュメントで開く」を選択
- ファイルパスに転記先.xlsxを指定
- Excelインスタンス名を「ExcelInstance2」とする(自動で命名されることが多い)
- 保存して実行 → ファイルが正しく開くことを確認
ステップ2:空白行を取得する(2行目からデータを開始するため)
データは列名の次の行(2行目)以降に書き込む必要があります。
そのため、最初に空白行を調べて取得しておきます。
- 「Excelワークシートから最初の空の行を取得」アクションを追加
- Excelインスタンスに「ExcelInstance2」を指定
- 結果を変数「FirstFreeRow2」に保存
→ 実行後、「FirstFreeRow2 = 2」であれば、2行目から書き込めるということです。
ステップ3:売上明細.xlsxを開いてデータを読み取る
- 「Excelの起動」アクションで売上明細.xlsxを開く
- 「Excelワークシートから範囲を読み取り」アクションを追加
- 読み取った範囲をデータテーブル変数「ExcelData」に格納
- 「Excelを閉じる」アクションで売上明細ファイルを閉じる(インスタンスは破棄されない)
ステップ4:1行ずつ繰り返し処理(For Each)
- 「For Each」アクションを追加
- 対象:
%ExcelData% - カレントアイテム変数:
CurrentItem(自動で生成される)
- 対象:
このアクションにより、売上明細の各行データを1つずつ処理することができます。
ステップ5:書き込む行番号を変数で管理
繰り返し書き込み時に、行を1行ずつ下にずらすための変数を設定します。
- 「変数の設定」アクションをFor Eachの外に追加
- 変数名:
cnt - 値:
0
- 変数名:
- For Eachの中にある「Excelワークシートに書き込み」アクションを設定
- インスタンス:
ExcelInstance2 - 値:
%CurrentItem% - 列:
A - 行:
%FirstFreeRow2 + cnt%
- インスタンス:
- 「変数を大きくする」アクションをFor Each内に追加
- 変数名:
cnt - 増分:
1
- 変数名:
これで、2行目、3行目、4行目…と、1件ずつデータを書き込むことができます。
ステップ6:条件で絞って転記(売上数量が5以上)
ここからが本題です。売上数量が5以上のデータだけを転記したいので、Ifアクションで条件を指定します。
- 「If」アクションをFor Eachの中に追加
- 条件の設定
- 最初のオペランド:
%CurrentItem[2]%(売上数量は3列目 → インデックスは2) - 演算子:
>= - 2番目のオペランド:
5
- 最初のオペランド:
- IfとEnd Ifの間に、以下のアクションを入れる
- 「Excelワークシートに書き込み」
- 「変数を大きくする」
これで、売上数量が5未満の行はスキップされ、条件を満たす行だけが転記されます。
ステップ7:実行と確認
フローを保存して実行します。
転記先ファイルを開いて、以下のようになっていれば成功です。
商品名 単価 売上数量 金額
B商品 800 7 5600
C商品 1200 9 10800
よくある質問
Q1. 転記されたデータが上書きされて2行目ばかりになる
→ 行番号をずらすためのcnt変数が正しく増えていない可能性があります。「変数を大きくする」アクションがIfの中にあるか確認してください。
Q2. 条件がうまく判定されず、すべての行が転記されてしまう
→ 条件の式で使っている列番号が間違っていることが多いです。売上数量が3列目にあるなら、CurrentItem[2]を使う必要があります(0始まりでカウント)。
Q3. 数値の条件が文字列として比較されている気がする
→ %CurrentItem[2]% が文字列扱いになっていると、>= などの演算子が正しく機能しません。必要に応じて「数値に変換」アクションを入れてください。
まとめ
この記事では、Power Automate Desktopを使って次の操作を行う方法を解説しました。
- Excelファイルを開いてデータを読み込む
- 転記先ファイルを開いて、最初の空白行を把握
- For Eachで1件ずつ処理
- 条件(売上数量が5以上)を指定して転記
- 書き込み位置を変数で制御して、縦に出力
このように条件付きの自動転記処理を作成することで、日々のExcel作業が大幅に効率化されます。
実際に動かしながら理解を深めて、自分の業務に活用してみてください。慣れてくれば、もっと複雑な条件処理やファイル操作にも応用できます。
