Excelで行番号をつけるときは、オートフィルで直接入力するか、ROW関数を使う方が多いと思います。
(ROW関数については、Excelのrow関数の使い方 メリット/デメリットとオートフィルとの使い分け をご覧ください)

ですが、基本的な表だとROW関数で十分ですが、とある表のときは、ROW関数が使いにくい場合があります。

それは、表の途中に空欄やカテゴリ行など、番号を振る行以外の行がある場合です。例えばこのような表です。

 

カテゴリごとに分けられているEXCELの表

この表に対し、ROW関数で番号を付けようとすると、このようになってしまいます。
(最初の「なし」は4行目にあるので、=row()-3 とします)

カテゴリごとに分けられているEXCELの表にROW関数で行番号を付ける

ぱっと見よさそうに見えますが、よく見ると6が欠番になっています。番号を振らない行が1つ増えたので、ROW関数の番号がずれてしまいました。

これを防ぐのが、MAX関数で行番号をつける方法です。

MAX関数の説明

MAX関数の書き方は以下の通りです。

=MAX(範囲)

意味は、「範囲の中での最大の数値を表す」です。

EXCELのMAX関数の説明

ちなみに、範囲内の数値以外の値は無視されます。範囲の中に数値がなければ、0と表示されます。

EXCELのMAX関数の説明 範囲内に数値が無い場合

MAX関数を利用して行番号を振る方法

こちらの表を例にします。結論から言うと、このように書くとうまくいきます。

=max(B$1:B3)+1

B$1の部分は、絶対参照です。行番号を振りたい列の、一番上の行(1行目)を固定します。

B3の部分は、相対参照です。「関数を入力する1つ上のセル」の指定です。

絶対参照と相対参照については、こちら

これを、コピー&ペーストですべてのセルに貼り付けます。すると、このように番号がうまく表示されました。

カテゴリごとに分けられているEXCELの表にMAX関数で行番号を付ける

No.9のセルにカーソルを合わせてみると、関数がこのように表示されています。B$1の部分は変わらず、先ほどB3と指定したセルが、B12と表示されていますね。

カテゴリごとに分けられているEXCELの表にROW関数で行番号を付ける 参照範囲の説明

それぞれのセルの範囲は、行の先頭から、直前のNoまでのセルを参照しています。直前のNoが、MAX関数の最大値になります。その数値に1を足すことによって、連番で行番号を振ることができます。

 

カテゴリごとに分けられているEXCELの表にROW関数で行番号を付ける 参照範囲の説明

途中で行番号以外の行が現れたとしても、その行が数値でなければ、MAX関数においては、無視するので問題ありません。

カテゴリごとに分けられているEXCELの表にROW関数で行番号を付ける 参照範囲の説明