Excelで商品リストを管理していると、「同じ商品が何度も出てくる」ことはありませんか?
たとえば仕入れ先ごとに記録していたり、複数の部署で管理していたりすると、同じ商品が重複して登録されてしまうことがあります。

重複データを手作業で整理するのは、かなり面倒だニャ
今回は、Power Automate Desktop(PAD) を使って、Excelの「商品マスター」シートにある重複する商品IDの行を、1つだけ残して別シートに転記する方法を紹介します。





PAD初心者の方でも分かるように、画面付きで丁寧に解説していきますのでご安心ください!
事前準備
使用するExcelファイルについて
今回使用するのは、以下のようなExcelファイルです。
- ファイル名:
PAD_リスト抽出_重複データ1つ残す.xlsx
- 使用するシート:
- 「商品マスター」シート:元データが入っている
- 「重複削除」シート:重複を除いたデータを出力する


- Excelファイルはあらかじめデスクトップなど分かりやすい場所に保存しておきましょう。
- Power Automate Desktopがまだの方は、こちらの記事(例)を参考にインストールしてください。
- Excelファイルは開いたままだとエラーになることがあるので、必ず閉じてからフローを実行してください。
商品マスター シート(元データ)



Excelシートを作成するのが面倒な方は以下をコピペしてください!
A列(商品ID) | B列(商品名) | C列(価格) |
---|---|---|
F001 | りんご | 150円 |
F002 | バナナ | 100円 |
F001 | りんご | 150円 |
F003 | みかん | 120円 |
F002 | バナナ | 100円 |
このように、商品ID(F001やF002)が重複している状態です。
フローの実行結果(重複削除シート)



このフローの実行結果は以下のようになります!
A列(商品ID) | B列(商品名) | C列(価格) |
---|---|---|
F001 | りんご | 150円 |
F002 | バナナ | 100円 |
F003 | みかん | 120円 |
同じ商品IDを持つ行は1つだけ残され、重複分は除かれて出力されます。
フロー全体の流れ
目的:Excelの「商品マスター」シートから重複する商品IDの行を1つだけ残し、「重複削除」シートに昇順に並べて転記する




①Excelファイルを開く
②「商品マスター」シートをアクティブにする
③Excelの商品データをPADに読み込む
④PADに新しいリスト(変数)を作成
⑤PADに新しいデータテーブル(変数)を作成
⑥③のデータをループ処理
⑦④のリストに含まれていない場合⑧へ(含まれている場合は⑥に戻る)
⑧IDをリストに追加
⑨データテーブルに追加
⑫「重複削除」シートをアクティブにする
⑬Excelシートの書き込み位置を取得する
⑭データテーブルの空行を削除
⑮データテーブルを商品IDで昇順ソート
⑯「重複削除」シートにデータを書き込む
⑰Excelを保存して閉じる
フロー作成の具体的手順
Excelファイルを開く


アクション:①Excel の起動(ファイルを開く)
- Excelの起動:「次のドキュメントを開く」をプルダウンから選択
- パス:
C:\Users\○○○\Desktop\PAD_リスト抽出_重複データ1つ残す.xlsx
を から選択 - インスタンスを表示する:✔ 表示する
- 読み取り専用として開く:✘ チェックしない
- 生成された変数:
ExcelInstance
「商品マスター」シートをアクティブにする


アクション:②アクティブなExcelワークシートの設定
- Excelインスタンス:①で生成した変数「%ExcelInstance%」をプルダウンから選択
- 次と共にワークシートをアクティブ化:「名前」をプルダウンから選択
- ワークシート名:「商品マスター」を入力
Excelの商品データをPADに読み込む


アクション:③Excel ワークシートから読み取る
- Excelインスタンス:①で生成した変数「%ExcelInstance%」をプルダウンから選択
- 取得:「セル範囲の値」をプルダウンから選択
- 先頭列:A
- 先頭行:2
- 最終列:C
- 最終行:6
- 生成された変数:
ExcelData
PADに新しいリスト(変数)を作成


アクション:④新しいリストの作成
- 生成された変数:
list
PADに新しいデータテーブル(変数)を作成


アクション:⑤新しいデータテーブルを作成する
- 新しいテーブル:1行,3列
- 生成された変数:
Data Table
③のデータをループ処理


アクション:⑥For Each
- 反復処理を行う値:③で生成した
ExcelData
- 生成された変数:
CurrentItem


④のリストに含まれていない場合⑧へ


アクション:⑦If
- 最初のオペランド:「%List%」を{x}から選択
- 演算子:「次を含まない」をプルダウンから選択
- 2番目のオペランド:「CurrentItem[‘Column1’]」を入力
- ⑧
List
に追加 - ⑨
DataTable
に 先頭(0番目)に行を挿入



④のリストに含まれている場合は⑥に戻ります。
重複しないIDをリストに追加


アクション:⑧項目をリストに追加
- 項目の追加:「CurrentItem[‘Column1’]」を入力
- 追加先リスト:「%List%」を{x}から選択
データテーブルに追加


アクション:⑨行をデータテーブルに挿入する
- データテーブル:「%Data Table%」を{x}から選択
- 挿入場所:「行インデックスの前」をプルダウンから選択
- 行インデックス:「0」を入力
- 新しい値:「%CurrentItem%」を{x}から選択
Excelシートの書き込み位置を取得する


アクション:⑬Excel ワークシートから最初の空の列や行を取得
- Excelインスタンス:「%ExcelInstance%」をプルダウンから選択
- 生成された変数:
FirstFreeColumn
FirstFreeRow


データテーブルの空行を削除


アクション:⑭データテーブルから空の行を削除する
- データテーブル:「%Data Table%」を{x}から選択


データテーブルを商品IDで昇順ソート


アクション:⑮データテーブルを並べ替える
- データテーブル:「%Data Table%」を{x}から選択
- 次で列を指定する:「インデックス」をプルダウンから選択
- 列のインデックス:「0」を入力
- 順序:「昇順」をプルダウンから選択


「重複削除」シートにデータを書き込む


アクション:⑯Excelワークシートに書き込む
- Excelインスタンス:「%ExcelInstance%」をプルダウンから選択
- 書き込む値:%Data Table%を{x}から選択
- 次と共にワークシートをアクティブ化:「名前」をプルダウンから選択
- ワークシート名:「商品マスター」を入力
Excelを保存して閉じる


アクション:⑰Excelを閉じる
- Excelインスタンス:「%ExcelInstance%」をプルダウンから選択
- Excelを閉じる前:「ドキュメントを保存」をプルダウンから選択



これでフローは完成です!
重複データ抽出完了!
下記の通り「重複削除」シートに重複する商品IDの行を、1つだけ残して別シートに転記されていれば成功です!


コピペで完成!



アクションを作成するのが面倒な方は、以下のテキストを新規のフロー画面に貼り付けてみて下さい!
ドキュメントのパスは、ご自身のPC環境に合わせて変更してくださいね
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $”’C:\Users\○○\Desktop\PAD_リスト抽出_重複データ1つ残す.xlsx”’ Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $”’商品マスター”’
Excel.ReadFromExcel.ReadCells Instance: ExcelInstance StartColumn: $”’A”’ StartRow: 2 EndColumn: $”’C”’ EndRow: 6 ReadAsText: False FirstLineIsHeader: False RangeValue=> ExcelData
Variables.CreateNewList List=> List
Variables.CreateNewDatatable InputTable: { ^[‘Column1’, ‘Column2’, ‘Column3’], [$”””, $”””, $”””] } DataTable=> DataTable
LOOP FOREACH CurrentItem IN ExcelData
IF NotContains(List, CurrentItem[‘Column1’], False) THEN
Variables.AddItemToList Item: CurrentItem[‘Column1’] List: List
Variables.AddRowToDataTable.InsertItemToDataTable DataTable: DataTable RowIndex: 0 RowToAdd: CurrentItem
END
END
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $”’重複削除”’
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
Variables.DeleteEmptyRowsFromDataTable DataTable: DataTable
Variables.SortDataTable.SortWithColumnIndex DataTable: DataTable ColumnIndex: 0 Order: Variables.SortDirection.Ascending
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: DataTable Column: $”’A”’ Row: FirstFreeRow
Excel.CloseExcel.CloseAndSave Instance: ExcelInstance
よくあるエラーと対処法
❌ エラー1:「指定されたファイルが見つかりません」
Excelのファイルパスが間違っているか、ファイルが移動または削除された可能性があります。
- 対処法:実際のパスをもう一度確認してコピー&貼り付けしましょう。
❌ エラー2:「データが書き込まれない」
DataTableが空のままだと、書き込みが実行されません。
- 対処法:ループや条件分岐で正しくデータを抽出できているか確認しましょう。
DataTable
の位置や条件を見直すのもポイントです。
❌ エラー3:「昇順に並ばない」
ソート処理のアクションで、ColumnIndex
を間違えている可能性があります。
- 対処法:
Column1(商品ID)
は「0番目の列」として設定されているか確認しましょう。
📌 その他のヒント
- Excelシートの名前は正確に(全角/半角やスペースも含めて)記述する
- 読み取り範囲(A2〜C6など)を変更したら、フロー側も修正を忘れずに
- フローが長くなったら、コメントを活用して整理するとわかりやすくなります
まとめ
今回は Power Automate Desktop(PAD)を使って、Excelにある重複データを1つだけ残して別シートに転記する方法をご紹介しました。
このフローでは、
- 商品マスターシートからデータを読み込み
- 重複するデータを判別し
- 一意のデータだけを新しいDataTableに保存
- 重複削除シートに転記する
というステップで、簡単にデータを整理することができます。



特に、同じ商品IDや商品名が複数登録されているようなリストを管理する場合に、このフローはとても役立ちます。
ポイントのおさらい
- DataTableとListを組み合わせて重複チェックを行う
- 重複しないデータだけを新しいDataTableに挿入&ソート
- 最終的に別シートへ転記&保存するだけで完了
Power Automate Desktopは、少しずつフローを組み立てていけば、誰でも業務の自動化ができるツールです。
ぜひご自身の業務に合わせて、今回のフローをカスタマイズしてみてください!