使用している行だけ自動で連番
Googleスプレッドシートには、EXCELでいう表のテーブル化の機能がありません。
次の記事でも触れましたが、テーブル形式にすることによって、数式のコピペなどの煩わしい作業から開放されて良いんですが、残念ながらありませんので、他の方法でなんとかする必要があります。
今回は、その中でも、使用頻度が高いと思う「使っている行だけ連番を振る方法」について紹介したいと思います(^o^)
やり方
使う関数は次です。
- ROW関数
- IF関数
- ARRAYFORMULA関数
ROW関数
引数に指定したセルの行番号を返してくれる有名なやつですね(^o^)
IF関数
これも、超基本なんで問題ないと思いますが、条件分岐をするための関数ですね。
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^)
コメント