【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!

Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
データの件数分だけ表を増やす方法(VBA)
投稿日時: 24/10/30 10:25:12
投稿者: のらねこ

関数等(VBA以外の方法)の標準機能で次のように票を増殖する方法はないでしょうか?
 
<前>
A    B
りんご 1
バナナ 2
みかん 3
 

<後>
A    B
りんご 1
バナナ 2
バナナ 2
みかん 3
みかん 3
みかん 3
 
自分で調べた限り見つけられませんでした。
何か取っ掛かりでも教えていただけると幸いです。

回答
投稿日時: 24/10/30 10:48:22
投稿者: QooApp

パワークエリを使用してカスタム列を追加し、カスタム列の定義で「A列の値をB列回リピートする」というように指示することでカスタム列に展開した場合の全件を生成できます。
 
以下手順です。
 
Power Queryを使って数量に応じた行の複製を行う手順
・データをPower Queryに読み込む
 元の表AB列のデータがある範囲を選択し、Excelのリボンから「データ」タブをクリックします。
 「テーブルまたは範囲から」を選択し、データをPower Queryエディタに読み込みます。
 
数量列に基づき複製行を生成する
・Power Queryエディタ内で、次の手順で数量に基づいた行の複製を行います。
 ・カスタム列を作成する
  「列の追加」タブで、「カスタム列」をクリックします。
  「カスタム列」の数式欄に次のコードを入力し、行を数量に応じて増やすためのリストを作成
  コードをコピーする
   = List.Repeat({[A]}, [B])
   ※「[A]」と「[B]」という括弧記号を含む範囲は列名を与える必要があります。
    コード入力画面の右端に列名が表示されていると思うのでダブルクリックします。
    カーソル位置に挿入される列名を括弧ごと載せ替えてください。
 
  この式で、例えば「バナナ」の数量が2であれば、行が2つ複製されるリストが生成されます。
 
 ・行を展開する
   カスタム列の右端に表示される「展開」ボタンをクリックします。
   複製された行を展開します。これにより、数量に応じた行が複製されて表示されます。
 
 ・不要な列を削除する
   元の数量列(B列)はこの時点で不要となるため、削除して整えます。
 
 ・データをExcelに戻す
  「ホーム」タブで「閉じて読み込み」を選択します。
  増殖されたデータをExcelシートに読み込みます。

投稿日時: 24/10/30 11:10:02
投稿者: のらねこ

QooAppさん、早速のご教授ありがとうございました!
パワークエリを使ったことがないので、この機に挑戦してみます。
ありがとうございました!