Excelで表の左側に作る「No.」列の値を自動で設定するための計算式のメモ書き**
前提
- 「No.」列がB列
- ヘッダー行が1行目で明細の開始行が2行目の場合
- 2行目の「B」列。いわゆる「B2」の計算式
何故メモするか
表を作る機会が多く、「=ROW()-1(ヘッダー行の行数)」の計算式を設定していたが、ヘッダーより上の行に他の情報を追記するために挿入した場合等、計算式上の行数がズレてしまうためにナンバリングがズレることがままあった。計算式の修正が毎回面倒で、少なくともヘッダーの行がずれてしまっても該当列のナンバリングの計算式を検討した。
計算式
=ROW()-(ROW()-1)+IF(ISNUMBER(B1),B1,0)
@radames1000さまより
上の計算式の場合、行を削除したりすると正常にナンバリングができなくなることを指摘いただきました。
また、すごくシンプルで良い計算式を教えて頂きました!
同上でヘッダーが1行目。明細が2行目開始の場合のB列に「No.」列を設定する場合の「B2」に設定する計算式となります。
=MAX($B$1:B1)+1
解説
ROW()
は、自分の行数を取得する関数
ROW()-1
は、自分の行数から-1しているので1行上の行数
まず前提としてROW()-(ROW()-1)
でインクリメントさせる数値を計算するというか1ずつインクリメントするわけだから、ここの部分はまるまる1
で置き換え可能です。今気づいた笑
ISNUMBER(B1)
は、1つ上のセルの値が数値かどうかを判断する。
IF(ISNUMBER(B1),B1,0)
とすることでヘッダー行の場合(つまり数値ではない場合)は0を数値の場合は、その数値(つまり「No.」の値)を加算する。
という事なのでこれでもいいのか。
=1+IF(ISNUMBER(B1),B1,0)
使う時気をつけること
- 「No.」列がBじゃない場合は、それらの列のアルファベット記号に合わせて修正する。
- 「B1」の部分は必ず計算式を設定するセルの1つ上のセルを対象とする。
終わりに
もっとこうしたら良いとか、そこおかしいのでは等あったら教えてください。
更新
2021/1/5 @radames1000さまコメントの指摘を反映