スプレッドシートの連番を基礎から解説

まずは、スプレッドシートで連番を入力する最も基本的な方法からおさらいしていきましょう。手動でサクッと入力する方法から、関数を使って自動化する第一歩まで、初心者の方でもすぐに使えるテクニックをご紹介します。

連番

オートフィルで簡単に番号を振る方法

スプレッドシートで連番を作るとき、一番直感的で簡単なのが「オートフィル」という機能を使う方法です。数行程度のリストなら、この方法が一番手っ取り早いですね。

操作はとってもシンプル。たとえば、A1セルに「1」、A2セルに「2」と入力します。そして、その2つのセルをマウスでドラッグして選択します。すると、選択した範囲の右下に小さな青い四角(■マーク)が表示されますよね。これを「フィルハンドル」と呼びます。

このフィルハンドルにマウスを合わせると、カーソルが「+」マークに変わります。そのまま下に向かってビーッとドラッグするだけで、システムが「あ、これは1ずつ増える連番だな」と勝手に解釈してくれて、「3, 4, 5…」と連続した数字を自動で入力してくれるんです。

【ちょっとしたコツ】
実は「1」と「3」を入力してドラッグすれば「奇数の連番(1,3,5…)」になりますし、「10」と「20」なら「10ずつ増える連番」になります。自分の好きなパターンを作れるのがオートフィルの面白いところです。

ちなみに、「1」だけ入力してドラッグすると、ただ「1」がコピーされるだけになってしまいます。もし「1」という1つのセルだけから連番を作りたい場合は、WindowsならCtrlキー、MacならOptionキーを押しながらドラッグしてみてください。これだけで連番になってくれますよ。

【オートフィルの弱点】
とても便利な機能ですが、あとから行を途中に挿入したり、削除したりすると、番号が歯抜けになったりズレたりしてしまいます。こまめに行の追加・削除がある表には、この後紹介する「関数」を使った方法がおすすめです。

ROW関数を使って自動で番号を振る

「途中で行を消したら、番号がズレちゃった…」という経験、ありませんか? そんな悩みを解決してくれるのがROW(ロウ)関数です。行の追加や削除が頻繁にある表では、この方法が定番ですね。

ROW関数は、そのセルが「上から何行目にあるか」という物理的な行番号を教えてくれる関数です。これを利用して連番を作ります。

たとえば、1行目が見出し(ヘッダー)で、実際のデータが2行目からスタートしているとします。この場合、2行目のA2セルに「1」と表示させたいですよね。そこで、A2セルに以下のように入力します。

=ROW()-1

A2セルの行番号は「2」です。そこから「-1」を引くことで、「1」という結果が表示される仕組みです。あとはこのセルを下に向かってオートフィルでコピーするだけで完了です。

この方法の最大のメリットは、途中の行を削除しても、勝手に番号が詰まって再計算されることです。いつでも綺麗な通し番号をキープできるので、管理表などを作る際にはぜひ覚えておきたいテクニックです。

SEQUENCE関数で一気に番号を作成

数千行、数万行といった大量のデータに連番を振りたい場合、下までずっとドラッグし続けるのは指が疲れますし、時間もかかりますよね。そんな時に圧倒的なパワーを発揮するのがSEQUENCE(シークエンス)関数です。

この関数は、1つのセルに数式を入れるだけで、指定した数の連番を一気に「ドバッ」と展開してくれます。

使い方はとても簡単です。たとえば、1から100までの連番を作りたいなら、一番上のセルにこう入力するだけです。

=SEQUENCE(100)

これだけで、下に向かって100行分の連番が一瞬で生成されます。

さらに応用も効きます。例えば、テキストと組み合わせて「ID-001」「ID-002」のような管理番号を作りたい時は、ARRAYFORMULA関数と組み合わせて以下のように記述します。

=ARRAYFORMULA("ID-" & SEQUENCE(100))

【エラーに注意!】
SEQUENCE関数が連番を展開しようとする範囲に、すでに別のデータが入力されていると、衝突を防ぐために「#REF!」というエラーが表示されてしまいます。展開先は必ず空白にしておきましょう。

スマホアプリから番号を連続入力する

出先などで、スマートフォンやタブレットのアプリ版スプレッドシートから連番を入力したい時もありますよね。PC版とは少し操作感が違うので、戸惑う方も多いかもしれません。

スマホアプリでは、ドラッグ操作の代わりに「範囲を選択してからオートフィルを実行する」という手順になります。

  1. まず、連番の起点となる「1」と「2」を隣り合うセルに入力します。
  2. その2つのセルを選択し、枠の端にある丸いポインタを引っ張って、連番を入れたい一番下の行まで青い選択枠を広げます。(この時点ではまだ番号は入りません)
  3. 広げた選択範囲の中をポンッと一度軽くタップします。
  4. 黒いメニュー(コンテキストメニュー)が表示されるので、その中から「オートフィル」を選んでタップします。

画面が小さくてメニューが見えない場合は、「その他」や三点リーダー(︙)のアイコンをタップすると出てきます。この手順さえ覚えておけば、スマホからでもサクサク連番を入力できますよ。

アルファベットの連続データを生成する

数字の「1, 2, 3…」だけでなく、「A, B, C…」というアルファベットで連番を振りたいケースもありますよね。しかし、スプレッドシートのオートフィルは「A」「B」と入力してドラッグしても、「A, B, A, B…」と繰り返されてしまい、うまく連番になってくれません。

アルファベットの連番を自動化するには、少しマニアックですがCHAR関数CODE関数を使います。文字を裏側のコンピューターのコード(数値)に変換して、そこに1を足して再び文字に戻す、という面白い仕組みです。

A1セルに「A」と入力してあるとします。続くA2セルには、以下のように入力します。

=CHAR(CODE(A1)+1)

この数式をオートフィルで下にコピーしていくと、綺麗な「A, B, C, D…」という連番ができあがります。文字コードの仕組みを利用した、知る人ぞ知る便利なテクニックです。

スポンサーリンク

スプレッドシートの連番を高度に制御する

連番1

ここからは、より複雑な実務データに対応するための高度な連番テクニックをご紹介します。空白行を飛ばしたり、フィルター機能と連携させたりと、データ管理の精度を格段に引き上げる方法を見ていきましょう。

空白行を飛ばして連続番号を付与する

実際の仕事で使う表には、メモ用の行や見やすくするための空白行(セパレータ)が混ざっていることがよくあります。単純にROW関数を使うと、この空白行にも番号が振られてしまいますよね。「データが入っている行だけに連番をつけたい!」という場合に活躍するのが、論理演算を組み合わせた手法です。

一番確実で強力なのは、ARRAYFORMULA関数とCOUNTIFS関数を組み合わせる方法です。
たとえば、A列に連番を表示し、B列のデータが入っている行だけをカウントしたい場合、A1セルに以下のように入力します。

=ARRAYFORMULA(IF(B:B="", "", COUNTIFS(B$1:B, "<>", ROW(B$1:B), "<="&ROW(B:B))))

パッと見は呪文のようですが、これ一つをA1セルに入れておくだけでOKです。

「B列が空白なら空白を表示し、データがある場合は、1行目から今の行までに存在するデータが入ったセルの数を数える」という処理を全行で一斉に行ってくれます。途中の行を消しても増やしても、リアルタイムで連番が調整される、まさにメンテナンスフリーの究極の数式です。

フィルター抽出時も番号の順序を保つ

大量のデータを扱うとき、特定の条件で絞り込む「フィルター」機能は欠かせません。しかし、普通の連番だとフィルターをかけた際に番号が「1, 4, 7…」のように飛び飛びになってしまい、今表示されているのが何件なのか分かりづらくなってしまいます。

「フィルターで絞り込んだ結果に対しても、上から常に1, 2, 3…と振り直したい」という場合は、SUBTOTAL(サブトータル)関数の出番です。

基準となるデータがB列にあるとします。連番を表示したい列の2行目に以下を入力して、下にコピーします。

=SUBTOTAL(3, B$2:B2)

この「3」という数字は、「空白以外のセルを数える(COUNTA)」という指示を出しています。SUBTOTAL関数のすごいところは、フィルターで隠れている行を無視して、画面に見えている行だけを数えてくれる点です。

これで、どんな条件でフィルターを切り替えても、常に「いま表示されているリストの1位からの順位」が一目でわかるようになります。ダッシュボード作りなどで重宝しますよ。

【注意点】
画面の表示状態によって番号が変わるため、「この行のデータはID番号5番」といったように、絶対的な管理番号として使うことはできません。用途に合わせて使い分けてくださいね。

並べ替え操作に強い番号の振り方とは

これまで紹介した関数(ROW関数など)は、「行の場所」を基準に計算するため、データを「並べ替え(ソート)」すると問題が起きます。

並べ替えをするとデータの中身は移動しますが、ROW関数は「自分がいま何行目にいるか」を計算し直してしまうため、連番は上から1,2,3…のまま変わりません。つまり、「特定のデータに紐づいていた番号が変わってしまう」という致命的な事態になり、データの追跡ができなくなります。

「並べ替えても、データと番号をずっとくっつけておきたい」という、いわゆるデータベースの「主キー(固有のID)」として連番を使いたい場合は、関数で動的に計算させるのは避けましょう。

この場合は、一番最初にご紹介した手動のオートフィル(またはSEQUENCE関数で展開した後、値として貼り付け直す)を使って、「固定の文字(定数)」としてセルに定着させておくのが正解です。そうすれば、どれだけ並べ替えをしても番号がデータから離れることはありません。

1行おきなど指定した間隔で番号を振る

入力フォームの仕様や、印刷レイアウトの都合などで、「1行おき」や「3行おき」といったように、一定の間隔で連番を配置したいというちょっと特殊なケースもあります。

こういった場合は、割り算の余りを求めるMOD関数を使って数学的にアプローチします。たとえば「1行おき(奇数行のみ)」に連番を振る場合は、以下のようになります。

=ARRAYFORMULA(IF(MOD(ROW(A1:A100)-1, 2) = 0, (ROW(A1:A100)-1)/2 + 1, ""))

これも難しく見えますが、要するに「行番号を2で割って、余りが0になる行(つまり奇数行にあたるタイミング)にだけ番号を計算して入れる」という仕組みです。

この数式の「2」の部分を「3」にすれば3行おき、「5」にすれば5行おきと、自分の好きな間隔にカスタマイズできます。フォーマットが決まっている表を作る際に覚えておくと、手作業がグッと減りますよ。

スプレッドシートの連番管理のまとめ

いかがだったでしょうか。一言で「スプレッドシートの連番」と言っても、ただ数字を打つだけのものから、関数を駆使した自動化システムまで、本当に奥が深いですよね。

最後に、状況に応じた使い分けをシンプルにまとめておきます。

  • サクッと使い捨てのリストを作るなら: オートフィルで手動入力
  • 行の追加・削除が多く、常に上から順序を保ちたいなら: ROW関数
  • 大量の番号を一瞬で作りたいなら: SEQUENCE関数
  • 空白行を飛ばしてデータがある分だけ数えたいなら: ARRAYFORMULA + COUNTIFS関数
  • フィルターで絞り込んだ結果に番号を振り直したいなら: SUBTOTAL関数

それぞれの機能の得意なこと、苦手なことを理解して使い分けることで、スプレッドシートは単なる表から、立派なデータ管理ツールへと進化します。ぜひ、ご自身の業務に合いそうなものから試してみてくださいね。

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