【Googleスプレッドシート | ノート】 使用している行だけ自動で連番を振る方法

スポンサーリンク

使用している行だけ自動で連番

Googleスプレッドシートには、EXCELでいう表のテーブル化の機能がありません。

次の記事でも触れましたが、テーブル形式にすることによって、数式のコピペなどの煩わしい作業から開放されて良いんですが、残念ながらありませんので、他の方法でなんとかする必要があります。

今回は、その中でも、使用頻度が高いと思う「使っている行だけ連番を振る方法」について紹介したいと思います(^o^)

やり方

使う関数は次です。

  1. ROW関数
  2. IF関数
  3. ARRAYFORMULA関数

1.ROW関数

引数に指定したセルの行番号を返してくれる有名なやつですね(^o^)

2.IF関数

これも、超基本なんで問題ないと思いますが、条件分岐をするための関数ですね。

3.ARRAYFORMULA関数

これはちょっと難しいですが、複数セルに一気に関数を反映させるための関数です。

構文

ARRAYFORMULA(配列数式)

配列数式 とは、 1 つの範囲か、1 つのセル範囲または同じサイズの複数範囲を使用する数式か、1 つのセルより大きい結果を返す関数を指定します。

基本的な使い方は以下の記事で紹介しています。

考え方

先に答えの数式です。

=ARRAYFORMULA(if(B2:B<>"",ROW(B2:B)-1,""))

この数式を次のような表のA2セルに入力します。

こんな感じで、B列で入力があるセルのA列だけに、連番が振られます。

では、内容の説明です。

ARRAYFORMULA関数があると分かりにくいので、一旦外します。

A2セルに、

=if(B2<>"",ROW(B2)-1,"")

を入力します。

IF関数で、A2の隣のセルB2セルの状態を確認します。

「B2<>""」つまり、空白でなければ真(True)、空白だったら偽(False)ですね。

空白の場合は、空白のままです。空白でない場合、つまりその行が使われている場合は、「ROW(B2)-1」を返します。

ROW関数は、引数に指定したセルの行番号を返しますので、この場合「ROW(B2)」だけだと「2」ですね。

しかし、この表は見出しが1行入っていますので、1を引いた数字が、連番としては適切なので、1を引いています。

ここまではOKですね(^o^)

そしてコピペせずに自動で連番入力をさせるために、ARRAYFORMULA関数を使います。

=ARRAYFORMULA(if(B2:B<>"",ROW(B2:B)-1,""))

図の文字が黄色になっている部分が追加された部分です。

ARRAYFORMULA関数で、「=if(B2<>"",ROW(B2)-1,"")」を複数セルに一気に反映させています。

IF関数の中の、指定のセルを「B2:B」と変更しています。B2:Bとセル範囲の後のセルの行番号を指定しないことで、一番下のセルまでの範囲が自動的に選択されます。

こうすることで、「=if(B2<>"",ROW(B2)-1,"")」が一番下の行まで反映しますので、B列に文字が入力された行だけ、A列に連番が振られるという仕組みです。

注意

今回の場合、表に空行は無いことを前提にしていますので、1行飛ばしでデータ入力を行うと、連番になりませんのでご注意ください。

まとめ

使用している行だけ自動で連番を振る方法を説明しました。ARRAYFORMULA関数は色々と応用の効く関数なので楽しいですね(^o^)