PR

Excelで数量分だけ行を増やす方法|Power Queryで同じデータを複数行に展開

ExcelのPower Queryで数量分だけ行を増やし、数量3・2・1のデータを数量1の6行へ展開する方法 Excel
記事内に広告が含まれています。

Excelで在庫表や商品一覧を管理していると、

「数量が3の商品を、同じ内容で3行に増やしたい」
「数量に応じて行を追加する作業が面倒くさい」
「同じデータを複数行に展開して、数量をすべて1にしたい」

と思うことはありませんか?
例えば、数量が3なら3行、数量が2なら2行に分割する作業です。

ExcelのPower Queryを使えば、数量分だけ行を増やす処理をまとめて実行できます。
一度設定すれば、元データが変更されても、更新操作で同じ処理を繰り返せます。

この記事では、実際の操作方法を初心者向けに解説します。画面と手順はWindows版Excelを使用しています。

Excelで数量分だけ行を増やすとどうなる?

まずは、変更前と変更後の違いを確認しましょう。

変更前

商品数量
商品A3
商品B2
商品C1

このデータを数量に応じて行へ展開すると、次のようになります。

変更後

商品数量
商品A1
商品A1
商品A1
商品B1
商品B1
商品C1

商品Aは3行、商品Bは2行、商品Cは1行になります。
元の3行が6行に増え、それぞれの数量が1になります。

数量を行展開する前と後の画像

Excelで数量分だけ行を増やす方法【Power Query】

今回はExcelの標準機能「Power Query」を使用します。
VBAやマクロは必要ありません。

① 元データをPower Queryに読み込む

まず、数量が入力されているExcelのテーブルデータを準備します。

■元データを読み込む
1.表内のセルを選択する
 ↓
2.[データ]タブから[データの取得]をクリック
 ↓
3.[その他のデータソースから]から[テーブルまたは範囲から]をクリック

データタブからテーブルのデータ取得

これでPower Queryエディターが起動します。

PowerQueryエディター

② 数量を繰り返すカスタム列を追加する

続いて、数量の値に応じてデータを繰り返すための列を作成します。

■分割数量のカスタム列を追加する
1.Power Queryエディターの[列の追加]タブから[カスタム列]を選択する
 ↓
2.新しい列名に「分割数量」と入力する
 ↓
3.カスタム列の数式に List.Repeat({1}, [数量]) と入力する
 ↓
4.[OK]をクリックする

PowerQueryエディターからカスタム列の追加

今回入力する式は次のとおりです。

List.Repeat({1}, [数量])
新しい列名とカスタム列の式の入力

この式は、数量の数だけ「1」を繰り返したリストを作成するものです。
例えば、数量が3なら {1,1,1} というリストが作成されます。

※[数量]列のデータ型が整数になっていることも確認してください。

③ リストを新しい行に展開する

カスタム列を追加すると、「分割数量」列に「List」と表示されます。
この状態では、まだ行は増えていません。

カスタム列にListと表示されている画像

この場合、以下の手順を実行して行を展開します。

■リストを新しい行に展開する
1.「分割数量」列の見出し右側にある展開アイコンをクリックする
 ↓
2.[新しい行に展開]を選択する

展開アイコンから新しい行に展開するを選択

すると、数量に応じて同じデータが複数行に展開されます。
商品Aなら3行、商品Bなら2行に増えています。

列名の名前を変更し、閉じて読み込む

④ 数量をすべて1にする

行の展開後は、元の「数量」列と、新しく作成した「分割数量」列が並んでいます。

今回の目的は、数量をすべて1にすることです。
そのため、次の操作を行います。

■数量列を整理して読み込む
1.Power Queryエディターで元の「数量」列を削除する
 ↓
2.「分割数量」列の名前を「数量」に変更する
 ↓
3.[ホーム]→[閉じて読み込む]をクリックする

不要列の削除
列の名前の変更をして、閉じて読み込む

これで、数量に応じて同じデータを複数行に増やした表がExcelへ出力されます。
元のExcelテーブルはそのまま残ります。

同じデータを複数行に増やした表がExcelに出力される

元データの数量が変わった場合は?

Power Queryの便利なところは、一度設定した加工手順を再利用できることです。

例えば、商品Aの数量を「3」から「5」に変更した場合でも、最初から設定し直す必要はありません。

元のExcelテーブルの数量を変更し、[データ]→[すべて更新]を実行すれば、変更後の数量に応じて行が再展開されます。

ただし、元データを変更しただけでは、通常は結果がリアルタイムに反映されません。

更新操作が必要になる点は覚えておきましょう。

数量分だけ行を増やせない場合の注意点

Power Queryで正しく展開できない場合は、次の点を確認してください。

確認項目対処法
数量が文字列になっている数値型に変更する
数量が空白になっている空白の扱いを決めて補正する
数量が0・負数になっている除外するか、別途処理を設定する
数量に小数が含まれている整数にするなど処理ルールを決める
元データの変更が反映されない[すべて更新]を実行する

今回紹介した式は、数量が1以上の整数であることを前提としています。
実務で利用するときは、元データに不正な数量が含まれていないか確認しましょう。

また、展開すると行数が大きく増えるため、大量のデータを扱う場合はExcelの行数上限や処理時間にも注意が必要です。

Power Queryによる行の複製はどんな仕事で使える?

数量分だけ行を増やす処理は、さまざまな実務で活用できます。

・在庫管理: 数量10の商品を1個ずつの管理データに変換
・出荷管理: 出荷数量に応じて明細行を作成
・商品管理: 商品情報を数量分だけ展開して個別管理
・ラベル作成: 数量分の商品ラベル用データを準備

手動で行を追加してコピーする作業を減らせるため、繰り返し行うデータ加工に向いています。

なお、複数の表を縦方向に結合したい場合は、VSTACK関数も便利です。
今回のように数量に応じて同じ行を増やす処理とは異なりますが、表の整理に活用できます。

また、元データのテーブルに新しい商品を追加しても、自動的に範囲が広がらない場合は、以下の記事も参考にしてください。

まとめ|Excelで数量分だけ行を増やすならPower Queryが便利

Excelで数量に応じて行を増やしたい場合は、Power Queryのカスタム列を利用する方法が便利です。

ポイントは次の3つです。

・List.Repeat({1}, [数量]) で数量分のリストを作成する
・リストを新しい行に展開して、同じデータを複製する
・一度設定すれば、次回からは更新操作で同じ処理を再実行できる

大量の商品データを手作業でコピーしている方は、ぜひ試してみてください。

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

🥷 「現代で暮らすゆる忍者」ラインスタンプシリーズ公開中!日常や仕事、夫婦の会話など様々なシーンを製作しています
▶ LINEスタンプ一覧はこちら

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

タイトルとURLをコピーしました