いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)1,1,1,2,2,2…のように続く連番を作る

 [※2022年12月更新]
 Googleスプレッドシートで1,1,1,2,2,2,3,3,3……といったように同じ数が一定回数続く連番を作成する方法です。
 項数が少なければ手作業で十分ですが、ここでは関数で実現します。

  • SEQUENCE関数と割り算を使って、同じ値が一定回数連続する連番を作成することができます。
  • FLATTEN関数とMAKEARRAY関数を使う方法もあります。

手順

SEQUENCE関数を使う方法

 連番生成用の関数であるSEQUENCE関数を使う方法です。 
 ここでは同じ数字が3つずつ連続する連番(1,1,1,2,2,2,3,3,3…)を12行にわたって並べるものとします。
 B2セルに次のように記します。

 B2セル

=ARRAYFORMULA(CEILING(SEQUENCE(12)/3,1))

 SEQUENCE関数で1~12の連番を生成し、それぞれ3で割って整数に切り上げています。
 値をいくつ並べるかはSEQUENCE関数の引数で指定し、同じ数字を何個ずつ並べるかは割り算の分母で指定しています。


 結果はこうなります。

FLATTEN/MAKEARRAY関数を使う方法

 こちらは行列生成用の関数であるMAKEARRAY関数を使う方法です。
 ここでも同じ数字が3つずつ連続する連番(1,1,1,2,2,2,3,3,3…)を12行にわたって並べています。

 B2セル

=FLATTEN(MAKEARRAY(4,3,LAMBDA(r,c,r)))

 MAKEARRAY関数の第1引数で連番の最大値を、第2引数で1つの数値が繰り返される回数を指定しています。
 生成される項数は2つの引数の積となります。
 生成された行列をFLATTEN関数で縦1列に並べ直しています。


 なお、式中のFLATTEN関数を除いて実行するとこうなります。
 MAKEARRAY関数は行列の各セルの値を行番号(ここではr)と列番号(ここではc)の関数として生成できるので、これを利用して連番を複数列生成しています。