【Excel】行番号を自動で割り振る関数
Excelで行番号をつける際、行の挿入や削除があっても値の変更をする必要が無いよう、以下のような関数を使用していました。
- 1行目:値として「1」を入力。
- 2行目以降:=OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), -1, 0)+1
この関数は、「自身のセルの1つ上のセルの値に+1する」という処理を行っています。2行目以降はすべて同じ内容で良いので便利です。
しかし、弱点もあり、下画像のように、間に空行があると番号が振り直されてしまいます。
A6の値を「=OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), -2, 0)+1」にすれば一応解決しますが、空行が有るたびセルの値を変えるのは大変ですし、先ほどの「2行目以降はすべて同じ内容で良い」というメリットが消えてしまいます。
この弱点を解消する関数が以下のブロクで紹介されています。
http://knjname.hateblo.jp/entry/2014/03/23/134053
=MAX(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))+1
この関数は、「今のセルより上の方の最大の番号+1を今のセルに与える」という処理を行っています。
先ほどのエクセルシートの二行目以降を、この関数に置き換えます。
- 1行目:値として「1」を入力。
- 2行目以降:=MAX(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))+1
この関数だと、間に空行があっても大丈夫です。