プロが教える店舗&オフィスのセキュリティ対策術

Googleスプレッドシートで、あるセルの値に応じて行を自動挿入したい
急いでいます!

くわしい方、よろしくお願いいたします。

<したいこと> 表1のようなデータがあるとします。これをD列の数字に応じて、表2のようにコピー行をその数字の数だけ作りたいのです。もちろん、手作業で「コピー→行挿入」を繰り返せばできますが、いかんせん実際はデータ量が多いため大変です。これを簡単に行う方法はないでしょうか。

表1
A列 B列 C列 D列
1 ポテト 120円 12/2 3
2 チョコ 150円 3/5 5
3 クッキー 200円 5/3 2


表2
A列 B列 C列 D列
1 ポテト 120円 12/2 3
2 ポテト 120円 12/2 3
3 ポテト 120円 12/2 3
4 チョコ 150円 3/5 5
5 チョコ 150円 3/5 5
6 チョコ 150円 3/5 5
7 チョコ 150円 3/5 5
8 チョコ 150円 3/5 5
9 クッキー 200円 5/3 2
10 クッキー 200円 5/3 2

シートは別に作成されると、なおよいです。

A 回答 (3件)

既に、ご質問者のご希望を叶える方法が複数投稿されているので、全くの余談ですが、ご質問者が表1を表2のようにしたい目的が説明されていません。


もしかすると目的によっては、表1を表2のようにする以外の方法で目的が達成、課題解決できるかも知れません。
表1を表2のようにする目的をお伺いしてみたい気がします。
    • good
    • 0

こんばんは



スプレッドシートは使っていないので、くわしくはありませんけれど・・・

>これを簡単に行う方法はないでしょうか。
スプレッドシートではスクリプトが使えるので、スクリプトを作成しておけば、いつでも何度でも実行することが可能なはずです。
https://developers.google.com/apps-script/refere …


スクリプトが使えないようなら、関数を利用するとか。
添付図は、要領のみの例なので同一シートですが、D列の回数だけ繰り返す例です。
F1セルに
=if(row(A1)<=sum($D:$D),index(A:A,match(true,scan(0,$D:$D,lambda(a,b,a+b))>=row(A1),0)),"")
を入力してあります。

※ D列に数値以外が存在するとエラーになりますのでご注意。
※ 別シートでも同じ要領で算出可能です。


関数もダメな場合は、手作業かなぁ・・
「Googleスプレッドシートで、あるセル」の回答画像2
    • good
    • 0

こちら↓を参考にして、別シートにしてみては。


https://www.officeisyours.com/entry/2019/12/15/2 …
そのままコピーしてもエラーになるので、以下のように書き換えます。
質問の表1を使用した場合
 =TRANSPOSE(SPLIT(CONCATENATE(ARRAYFORMULA((REPT(A1:A3&",",$D$1:$D$3)))),","))
「Googleスプレッドシートで、あるセル」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!