豚吐露@wiki

シーケンシャルな値を自動で採番したい

最終更新:

ohden

- view
管理者のみ編集可

シーケンシャルな値(ID)を自動で採番したい

Excel for Microsoft365 (16.0.13901.20366) 64bit


各行に連続した値を自動で表示
色々な方法があると思うが、よく使うのは『ROW()』『COLUMN()』を使う方法。
=ROW()
で現在の行番号が取れるので...6行目以降に順に採番したいなら...
=ROW()-5
でok。

横なら、例えばC列から右に順に裁判したいなら...
=COLUMN()-2
とかですね。

現在の行より上にある値に続く値を自動で表示
連番を振りたいんじゃが、番号の間隔が一定で無くrowで単純に割り振れない場合、以下のように入力する。
=IFERROR(MAX(INDIRECT("$A$1:"&ADDRESS(ROW()-1,COLUMN())))+1,1)
すると、自セルより上にある数字の最大値+1の値を表示してくれる。

解説
以下、解説
ROW()、COLUMN()は自セルの行番号、列番号を取得できる。COLUMNで取得される列番号は『A、B、C、…』ではなくR1C1形式の列番号。
これをADDRESSに渡してA1形式にするんじゃが、『row()-1』を渡すことで自セルの一つ上のセルを指定してやる。
つまり『ADDRESS(ROW()-1,COLUMN())』で現在の一つ上のセルを表す文字列を作成できる。

生成された文字列と『$A$1:』て文字列をくっつける。ココで指定するのが、入力された連番の始点位置。
上図だと、A列に番号が振られてるimageなのでA1を始点に指定してる。
入力したセルがA6だった場合、『$A$1:$A$5』という文字列が生成される。

この文字列をINDIRECTにぶちこむと、文字列からその範囲指定したって情報に変換される。
このINDIRECTで生成した情報は、関数のセル指定や範囲指定として使えるので、そのままMAX関数に突っ込んでやる。
すると、自セルより上にある数字の最大値が取れる。
取れた値に『+1』してやれば、シーケンシャルな値が自動で生成できる。

で、その範囲に数値が無かった場合、つまり最初の値の場合。
MAX関数がエラーを返すので、IFERRORを使って『1』を表示している。

現在の行より左にある値に続く値を自動で表示
横version。
=IFERROR(MAX(INDIRECT("$A$1:"&ADDRESS(ROW(),COLUMN()-1)))+1,1)


更新日: 2021年08月23日 (月) 11時59分41秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー