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

「数量が3の商品を、同じ内容で3行に増やしたい」
「数量に応じて行を追加する作業が面倒くさい」
「同じデータを複数行に展開して、数量をすべて1にしたい」
と思うことはありませんか?
例えば、数量が3なら3行、数量が2なら2行に分割する作業です。
ExcelのPower Queryを使えば、数量分だけ行を増やす処理をまとめて実行できます。
一度設定すれば、元データが変更されても、更新操作で同じ処理を繰り返せます。
この記事では、実際の操作方法を初心者向けに解説します。画面と手順はWindows版Excelを使用しています。
Excelで数量分だけ行を増やすとどうなる?
まずは、変更前と変更後の違いを確認しましょう。
変更前
| 商品 | 数量 |
|---|---|
| 商品A | 3 |
| 商品B | 2 |
| 商品C | 1 |
このデータを数量に応じて行へ展開すると、次のようになります。
変更後
| 商品 | 数量 |
|---|---|
| 商品A | 1 |
| 商品A | 1 |
| 商品A | 1 |
| 商品B | 1 |
| 商品B | 1 |
| 商品C | 1 |
商品Aは3行、商品Bは2行、商品Cは1行になります。
元の3行が6行に増え、それぞれの数量が1になります。

Excelで数量分だけ行を増やす方法【Power Query】
今回はExcelの標準機能「Power Query」を使用します。
VBAやマクロは必要ありません。
① 元データをPower Queryに読み込む
まず、数量が入力されているExcelのテーブルデータを準備します。
■元データを読み込む
1.表内のセルを選択する
↓
2.[データ]タブから[データの取得]をクリック
↓
3.[その他のデータソースから]から[テーブルまたは範囲から]をクリック

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

② 数量を繰り返すカスタム列を追加する
続いて、数量の値に応じてデータを繰り返すための列を作成します。
■分割数量のカスタム列を追加する
1.Power Queryエディターの[列の追加]タブから[カスタム列]を選択する
↓
2.新しい列名に「分割数量」と入力する
↓
3.カスタム列の数式に List.Repeat({1}, [数量]) と入力する
↓
4.[OK]をクリックする

今回入力する式は次のとおりです。
List.Repeat({1}, [数量])
この式は、数量の数だけ「1」を繰り返したリストを作成するものです。
例えば、数量が3なら {1,1,1} というリストが作成されます。
※[数量]列のデータ型が整数になっていることも確認してください。
③ リストを新しい行に展開する
カスタム列を追加すると、「分割数量」列に「List」と表示されます。
この状態では、まだ行は増えていません。

この場合、以下の手順を実行して行を展開します。
■リストを新しい行に展開する
1.「分割数量」列の見出し右側にある展開アイコンをクリックする
↓
2.[新しい行に展開]を選択する

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

④ 数量をすべて1にする
行の展開後は、元の「数量」列と、新しく作成した「分割数量」列が並んでいます。
今回の目的は、数量をすべて1にすることです。
そのため、次の操作を行います。
■数量列を整理して読み込む
1.Power Queryエディターで元の「数量」列を削除する
↓
2.「分割数量」列の名前を「数量」に変更する
↓
3.[ホーム]→[閉じて読み込む]をクリックする


これで、数量に応じて同じデータを複数行に増やした表が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}, [数量]) で数量分のリストを作成する
・リストを新しい行に展開して、同じデータを複製する
・一度設定すれば、次回からは更新操作で同じ処理を再実行できる
大量の商品データを手作業でコピーしている方は、ぜひ試してみてください。



コメント