今回は、ExcelのROW(ロウ)関数とCOLUMN(カラム)関数を使用して、行の挿入や削除を行っても崩れない、自動的に更新される連番(通し番号)を振る方法について紹介します。
連番入力の課題とROW関数・COLUMN関数の基本
Excelで名簿や商品リストなどの表を作成する際、一番左の列に「1, 2, 3…」という連番(通し番号)を振ることがよくあります。
通常は「1」と「2」を入力し、その2つのセルを選択して右下のフィルハンドルをダブルクリックするか下へドラッグする「オートフィル」機能を使って連番を作成します。
しかし、この手作業で作った連番には大きな弱点があります。
それは、後から表の途中に新しいデータを「行の挿入」で追加したり、不要になったデータを「行の削除」で消したりすると、連番が「1, 2, 4,
5」のように飛んでしまったり、「1, 2, 空白,
3」のように間が空いてしまったりして、その都度オートフィルをやり直さなければならない点です。
この面倒な手直しをなくし、行の増減に合わせて常に正確な連番を自動的にキープし続けるために使われるのが「ROW関数」と「COLUMN関数」です。
ROW関数(行番号を取得する)
ROW関数は、指定したセルがワークシートの上から「何行目」にあるかという数値を返してくれる関数です。
構文:=ROW([参照])
引数の「参照」は省略可能であり、省略して「=ROW()」と入力すると、「その数式が入力されているセル自身の行番号」を返します。
例えば、B5セルに「=ROW()」と入力すると、5行目なので「5」という結果が表示されます。
COLUMN関数(列番号を取得する)
COLUMN関数は、指定したセルがワークシートの左から「何列目」にあるかという数値を返してくれる関数です。
構文:=COLUMN([参照])
こちらも参照を省略して「=COLUMN()」と入力すると、「その数式が入力されているセル自身の列番号」を返します。
例えば、D2セルに「=COLUMN()」と入力すると、A, B, C,
Dと数えて4列目なので「4」という結果が表示されます。横方向(列方向)に連番を振りたい場合に使用します。
ROW関数を使って自動更新される連番を作る手順
実務で圧倒的に使用頻度の高い、縦方向(行方向)への連番作成を例に、ROW関数をどのように数式に組み込むかを解説します。
見出し行の分を引き算して「1」から始める
表のデータがワークシートの一番上の1行目から始まっていれば、「=ROW()」と入力するだけで「1, 2, 3…」という連番になります。
しかし実際の表は、1行目にタイトルがあり、2行目に「No.」「氏名」「部署」といった見出しがあり、実際のデータ(連番の「1」)は3行目から始まるのが一般的です。
この3行目のA3セルに「=ROW()」と入力してしまうと、行番号である「3」が表示されてしまい、連番のスタートがずれてしまいます。
これを「1」にするためには、数式の中で「上の余分な行数(タイトルと見出しの2行分)」を引き算(マイナス)します。
A3セルに「=ROW()-2」と入力します。
これで、3行目マイナス2で「1」が表示されます。
この数式を下のセル(A4、A5…)へオートフィルでコピーすると、4行目は「4-2=2」、5行目は「5-2=3」となり、きれいな連番が完成します。
行の挿入と削除に対する強さ(自動更新)
この「=ROW()-2」という数式で作られた連番の最大の強みは、表の途中で行を削除したり挿入したりしたときの挙動にあります。
例えば、連番「3(A5セル)」の行をまるごと削除したとします。
すると、下にあった連番「4(A6セル)」の行が上に一つずれて5行目に移動してきます。
移動してきたセルには「=ROW()-2」という数式が入っているため、自身の新しい行番号である「5」を再取得し、「5-2=3」として瞬時に連番「3」に書き換わります。
つまり、行が削除されても、数式が自分の現在位置を常に自己評価し続けるため、連番が絶対に歯抜けにならない仕組みが完成するのです。
行を挿入した場合も同様に、挿入した空の行に上のセルの数式をコピーするだけで、前後の連番が自動的にずれて正確な通し番号が再構成されます。
COLUMN関数を使った横方向の連番と、高度な組み合わせ
縦方向の連番がマスターできれば、横方向の連番や、他の関数と組み合わせたより高度なテクニックも簡単に応用できます。
横方向のカレンダーやスケジュール表への応用
シフト表やガントチャートなどで、横方向(列方向)に「1日、2日、3日…」と日付や連番を振っていく場合は、COLUMN関数を使用します。
例えば、C2セルから「1」という連番を横に振りたい場合、C列は左から3列目なので、「=COLUMN()」とすると「3」になってしまいます。
縦方向の時と同じように、左側にある余分な列数(A列とB列の2列分)を引き算し、C2セルに「=COLUMN()-2」と入力します。
これを右方向へオートフィルでコピーすることで、列の挿入や削除に強い横方向の連番が作成できます。
また、「=COLUMN()-2 & “日”」のように「&(アンパサンド)」を使って文字と結合させれば、「1日、2日…」という表示形式を作ることも可能です。
IF関数と組み合わせた「データが入力されたら連番を振る」設定
「=ROW()-2」の数式をあらかじめ表の100行目までコピーしておくと、まだ氏名などのデータが入力されていない空の行にも「4, 5,
6…」と連番だけが虚しく表示されてしまい、表の見栄えが悪くなります。
これを防ぐために、IF関数と組み合わせて「隣のセル(氏名など)にデータが入力されたときだけ、連番を表示する」という賢い数式に進化させます。
A3セル(連番)に、「=IF(B3=””, “”, ROW()-2)」と入力します。
これは「もし隣のB3セル(氏名)が空白(””)なら、このA3セルも空白(””)にする。空白でなければ(名前が入力されたら)、ROW()-2の連番を表示する」という意味の数式です。
この数式を下までコピーしておけば、新しくB列に名前を入力した瞬間に、左側のA列に自動的に「パッ」と次の連番が現れるようになり、データ入力の手間をさらに一つ減らすことができます。
まとめ
ExcelのROW関数とCOLUMN関数を使って、行や列の挿入・削除に強い自動更新される連番を作成する方法について解説しました。
「=ROW()」で現在の行番号を取得し、上の見出し行の分だけマイナスする(例:=ROW()-2)というシンプルな引き算を数式に組み込むだけで、手作業でのオートフィルのやり直しから完全に解放されます。
横方向の連番にはCOLUMN関数を使い、さらにIF関数と組み合わせて「データが入力されたら連番を表示する」といった自動化のテクニックも実務で非常に重宝します。
VLOOKUP関数で列番号を指定する際など、他の関数の引数としてROW関数やCOLUMN関数を入れ子(ネスト)にして使う高度な手法への第一歩にもなるため、Excelの構造を理解する上でも重要な関数です。
表のメンテナンスにかかる無駄な時間をなくし、壊れにくい堅牢なフォーマットを作成するために、ぜひこの連番の自動化を取り入れてみてはいかがでしょうか。