← 手順一覧へ戻る
Power Automate DesktopExcel中級よく使う

条件に合うExcelの行だけを別ファイルへ転記する

状態が「未処理」の明細だけ、新しいExcelブックへ書き出します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • DataRowをそのままExcel書き込みへ渡せる前提を避け、この例は列の値を個別に転記します。列を増やす場合は対応する書き込みも増やしてください。
  • 一致が0件なら見出しだけのブックです。元の状態は更新しません。再実行や出力ファイルの上書きには注意してください。

1使うアクション

  1. アクション 1Excel の起動
  2. アクション 2アクティブな Excel ワークシートを設定する
  3. アクション 3Excel ワークシートから読み取る
  4. アクション 4Excel を閉じる
  5. アクション 5Excel の起動新しい空白ブック
  6. アクション 6Excel ワークシートに書き込む見出しをA1・B1へ
  7. アクション 7変数の設定
  8. アクション 8For eachExcelDataをCurrentRowへ
  9. アクション 9If状態が未処理
  10. アクション 10Excel ワークシートに書き込む商品をA列・状態をB列へ
  11. アクション 11変数を大きくする転記した場合だけ
  12. アクション 12EndIfの終わり
  13. アクション 13EndFor eachの終わり
  14. アクション 14Excel を閉じる

表で見る入力と処理結果

架空データ

未処理と完了が混ざる明細から、未処理の2行だけを間を空けずに別ブックへ転記します。

Desktop:Excelブック/ワークシート
C:\PAD練習\元データ.xlsx/明細 → C:\PAD練習\未処理一覧.xlsx

以下は手順に沿った期待値です。実際のPower Automate・Excel環境で実行して確認した結果ではありません。セルや行の着目箇所には「●」を付けています。

処理前:元データの明細

A1=商品、B1=状態が見出し。A2:B4のうちB2・B4が条件に一致します。
行A:商品B:状態
2ノート● 未処理
3ペン完了
4ファイル● 未処理
↓ 処理する行・列/設定

明細の使用範囲A1:B4を先頭行は列名として読みます。%CurrentRow['状態']%が「未処理」と等しい行だけ、%OutputRow%=2から転記します。

保存後:未処理一覧.xlsx

A1=商品、B1=状態を先に書き、A2:B3へ一致した行を詰めて転記する想定例です。
行A:商品B:状態
2● ノート● 未処理
3● ファイル● 未処理
結果の見方

元の2行目と4行目が、出力の2行目と3行目になります。完了の行では%OutputRow%を増やさないので、出力に空白行はできません。

  • 架空の説明用データです。元の明細の状態は更新しません。
  • 商品と状態はそれぞれ別の書き込みアクションで転記します。列を増やすときは書き込みも追加します。
  • 一致が0件ならA1:B1の見出しだけを保存します。
  • 既存の未処理一覧.xlsxを上書きしない出力先を用意し、再実行時の扱いを確認してください。

図で見る処理のイメージ

概念図

状態が「未処理」の明細だけ、新しいExcelブックへ書き出します。

  1. 元の表

    未処理・完了が混在

  2. 判定

    1行ずつ状態を確認

  3. 転記

    未処理だけA列・B列へ

  4. 出力

    見出し+未処理明細

結果の例

条件に一致した行の値を新しいブックへ保存します。

図は設定例の流れを表したもので、実行結果の画面ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する6ステップの設定と確認方法
  1. 1

    C:\PAD練習\元データ.xlsx の「明細」にA1=商品、B1=状態を用意します。Excelで開き %SourceExcel% にし、明細を選択、使用範囲を先頭行は列名として %ExcelData% に読み取って保存せず閉じます。

  2. 2

    Excelの起動で新しい空白ブックを作り %DestinationExcel% にします。書き込みを2つ置き、A1に「商品」、B1に「状態」を書きます。

  3. 3

    変数の設定で数値 %OutputRow% = 2。For eachの対象 %ExcelData%、現在の行 %CurrentRow%。

  4. 4

    Ifで %CurrentRow['状態']% が「未処理」と等しいか比較します。内側で、対象 %DestinationExcel%、行 %OutputRow% とし、列Aへ %CurrentRow['商品']%、列Bへ %CurrentRow['状態']% を別々に書き込みます。

  5. 5

    If内で %OutputRow% を1増やします。IfのEnd、For eachのEndの順で閉じます。

  6. 6

    ループ外で %DestinationExcel% を名前を付けて保存して閉じます。形式.xlsx、保存先 C:\PAD練習\未処理一覧.xlsx。既存ファイルがない出力先を用意します。

Microsoft公式ページで確認する