1行目も同じ数式で連番を振る

1行目を含む列内のすべてのセルに同じ数式を指定して連番を振る方法を紹介します。並べ替えをしても、新たな並びで連番が振り直されるようになります。

1行目に「1」、2行目以降に「上のセル+1」の数式を入力する方法では、並べ替えをすると連番が崩れてしまいます。また、数式が不統一になるので(特にテーブルでは)好ましくありません。

N関数を併用した連番

「上のセル+1」の数式にN関数を加えるだけで、1行目(上のセルが見出し文字列)にも対応できるようになります。

=N(INDIRECT("R[-1]C",FALSE))+1
  または
=N(OFFSET(B3, -1, 0))+1

ここでのN関数は、値が数値の場合はその数値を返し、文字列の場合は 0 を返します。1行目の上に見出しがあってもなくても、1行目は「0+1」になる仕組みです。

INDIRECT("R[-1]C",FALSE) については、以下のトピックを参照してください。

本来のN関数はどの値の型でも数値にして返す関数で、他システムとの互換用に用意されたものです。

数値 そのままの数値
日付・時刻 シリアル値
TRUE/FALSE TRUE1FALSE0
エラー値([#N/A]など) エラーコード値
その他(文字列など) 0

同等の処理はISNUMBER関数を使っても表せますが、N関数のほうが簡潔にまとめられます。

=IF(ISNUMBER(INDIRECT("R[-1]C",FALSE)),INDIRECT("R[-1]C",FALSE),0)+1

ROW 関数を使った連番

行番号から割り出す方法です。自セルの行番号から見出しの行番号と差から求められます。

例1 : B2が見出しセルでB3以降に連番を振る場合
=ROW()-ROW(B$2) 
例2 : テーブル内の列に連番を振る場合
=ROW()-ROW(テーブル1[#見出し])

N関数を使う方法より記述をシンプルにできますが、この方法は汎用性が完全ではないので使い方に注意してください。

例1の場合、絶対参照を使用するため、見出し行の行番号が変わらないことが前提となります。

例2の場合、テーブルの見出しが表示されていることが前提となります。非表示にすると参照エラーになり、再表示すればエラーは解消されます。

タイトルとURLをコピーしました