Excel: 連番作成方法あれこれ


###### 実施環境 : Microsoft Office Professional Plus 2016

### 0. 概要

 Excel で表を作成する場合、その列にはどのようなものがあるでしょうか。
表の内容によって様々な列が作られますが、ほとんどの場合、行番号を振る列が存在すると思います。

この行番号について連番を作成したいとき、どのようにすればよいでしょうか。
もちろん1つ1つ入力してもよいのですが、行が多い場合はなかなか面倒です。
今回はそのような、連番を作成する方法について紹介します。

### 1. オートフィル(フィルハンドルをドラッグ)

★有用な場面
* 行の並び替えや追加/削除がほとんどない場合
* 行数があまり多くない場合
* 行の並び替えや追加/削除の前後で行番号を維持したい場合

まずは、先頭の数字を入力します。

![WS000239.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f25a03f3-35d9-08b3-7ef9-f96e93c4a416.jpeg "1-1")

次に、行全体を選択して右下の ■ を下にドラッグします。

![WS000240.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/dd4f4f21-8f55-19e6-4935-aeba1068ae2e.jpeg "1-2")

![WS000241.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/73df3610-e475-9ab9-a49e-db8b59805dd7.jpeg "1-3")

![WS000242.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/02730a45-a0b0-e5a6-4003-34471d6ae574.jpeg "1-4")

ドラッグ後、右下の ■ から「連続データ」を選択します。

![WS000246.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/11187f1f-bf32-062b-36e1-404e7d0ce0b5.jpeg "1-5")

これで、連番が作成できました。

![WS000247.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/8c66fea1-cba6-4bd0-9d1c-5930cd746cca.jpeg "1-6")

ちなみに、2番目の数字まで手動で入力し、2行とも選択範囲に入れて同様の操作をすれば、最後の「連続データ」の選択は不要になります。

![WS000253.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/228102c6-8d52-71e5-8b07-6efb44b399c8.jpeg "1-7")

![WS000254.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/8b861c30-ae14-2d1a-dcce-8f2aa6b707c5.jpeg "1-8")

ここで入力した数字は固定の数字なので、行の追加/削除や並び替えをしても連番と行の内容の結びつきは維持されます。

### 2. フィルメニュー

★有用な場面
* 行の並び替えや追加/削除がほとんどない場合
* 行数が非常に多い場合
* 行の並び替えや追加/削除の前後で行番号を維持したい場合

まずは、先頭の数字を入力します。

![WS000239.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f25a03f3-35d9-08b3-7ef9-f96e93c4a416.jpeg "2-1")

入力したセルにカーソルを合わせたまま、「ホーム」⇒「編集」⇒「フィル」⇒「連続データの作成」を選択します。

![WS000248.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/cb536287-560e-df61-c7b6-65f0e7fa0ecd.jpeg "2-2")

設定を入力し、「 OK 」を押します。
今回は、以下の設定を使用します。

|項目|値|
|:-|:-|
|範囲|列|
|種類|加算|
|増加単位|-|
|データ予測|チェックを外す|
|増分値|1|
|停止値|10|

![WS000250.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e620849a-7d8c-5ce9-8f05-e75db4e6107d.jpeg "2-3")

これで入力値から1ずつ増えて10までの連番を作成できます。

![WS000251.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/16db679c-9dc7-1f7e-2f9d-e429dea1836e.jpeg "2-4")

連番以外の列については、適当にコピーしたり罫線を引いたりしてください。
先ほどの方法と同様、こちらも入力した数字は固定の数字なので、行の追加/削除や並び替えをしても連番と行の内容の結びつきは維持されます。

### 3. 四則演算

★有用な場面
* 行の追加/削除がよくある場合
* 行数が非常に多い場合
* 表の場所を移動する可能性がある場合

まずは、先頭の数字を入力します。
そしてその入力したセルがどこかを確認します。

![WS000259.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f5c9dfb9-3dd5-d47a-da67-66d526a4b728.jpeg "3-1")

今回はセル「 B3 」に入力したので、「同セルに1を足し算する」式を以下のように次のセル「 B4 」に入力します。

```Excel:Excel
=B3+1
```

![WS000260.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/cf32d37d-a1ec-f0a3-d296-bb84df884ddf.jpeg "3-2")

最後に式を入力したセルの行をまとめてコピーします。
式の「 B3 」の部分はコピーした際に相対的な位置を維持するよう適宜自動で変更されるので、式を手動で書き換える必要はありません。

![WS000261.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/bb4bfef2-2044-e4c4-6001-5ca0d0ece7ba.jpeg "3-3")

式の「 B3 」が相対的に処理されることにより、表の位置を移動しても連番は維持されます。
また、行の追加もコピーすればよいだけなので簡単です。
一方、この連番は先頭行の番号を基準にしているため、並び替えなどで先頭行が変わると、連番が壊れる可能性があることに注意してください。

### 4. ROW 関数

★有用な場面
* 行の並び替えや追加/削除がよくある場合
* 行数が非常に多い場合
* 表の場所を移動する可能性がない場合

まず、先頭行のエクセルシート上での行番号を確認します。

![WS000255.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/088579e1-cb9d-65a4-0979-73bfb363af29.jpeg "4-1")

今回は行番号3なので、行番号から2を引く式を以下のように行番号3のセルに入力します。

```Excel:Excel
=ROW()-2
```

![WS000256.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/55fc25f5-7633-3a6e-a9cb-87bee128efdb.jpeg "4-2")

あとは入力した行をまとめてコピーすれば完了です。
全ての行について「行番号-2」が連番として作成されます。

![WS000257.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/71421d11-8c64-9041-1a6c-a769c7e9a33a.jpeg "4-3")

行番号が基準のため、行の追加/削除や並び替えを行っても連番は壊れません。
一方で、表を移動させると連番がずれることがあります。

### 5. COUNTA 関数

★有用な場面
* 行の並び替えや追加/削除がよくある場合
* 行数が非常に多い場合
* 必ず空でない列が存在する場合

まず、空でない列を探し、そのセルのエクセルシート上での先頭を確認します。

![WS000262.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/27b9430a-e2e5-7933-d5ce-f55d54bd8c4f.jpeg "5-1")

今回はセル「 C3 」なので、以下のようにセル「 C3 」からセル「 C3 」までの空でないセルの個数を計算する式をセル「 C3 」に入力します。
なお、式の1つ目の「 C3 」にドルマーク($)が付与されているのは、コピー時に相対位置として変更されないようにするためです。

```Excel:Excel
=COUNTA($C$3:C3)
```

![WS000263.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/39e3c598-e1f1-a0f1-3968-a4c4b06a8f0f.jpeg "5-2")

あとは入力した行をまとめてコピーすれば完了です。
式の1つ目の「 C3 」は固定で2つ目の「 C3 」だけ自動で変更されるため、連番が作成できます。

![WS000264.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/6cde1f28-ccf9-0411-0529-705ab6e6dc46.jpeg "5-3")

この方法は行の追加/削除や並び替え、表自体の位置の移動にも耐えられます。
ただ、この COUNTA 関数はあくまで「空でないセルの個数をカウントする」関数なので、以下のように指定した列が穴あきだと正常な連番にならないことに注意してください。

![WS000265.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/53337880-c28f-4e75-3092-75fde232b88c.jpeg "5-4")

### 6. SUBTOTAL 関数

★有用な場面
* 行の並び替えや追加/削除がよくある場合
* 行数が非常に多い場合
* フィルタを併用し、フィルタ部分も連番になるようにしたい場合

まず、空でない列を探し、そのセルのエクセルシート上での先頭を確認します。

![WS000262.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/27b9430a-e2e5-7933-d5ce-f55d54bd8c4f.jpeg "6-1")

今回はセル「 C3 」なので、以下のようにセル「 C3 」からセル「 C3 」までの空でないセルの個数を計算する式をセル「 C3 」に入力します。
 SUBTOTAL 関数の最初の引数が「3」の場合は先ほどと同じ「 COUNTA 」の処理が行われます。
なお、式の1つ目の「 C3 」にドルマーク($)が付与されているのは、コピー時に相対位置として変更されないようにするためです。

```Excel:Excel
=SUBTOTAL(3,$C$3:C3)
```

![WS000267.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/2332d9e3-6af4-c1d1-a784-83031082db35.jpeg "6-2")

あとは入力した行をまとめてコピーすれば完了です。
式の1つ目の「 C3 」は固定で2つ目の「 C3 」だけ自動で変更されるため、連番が作成できます。

![WS000268.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/028186f7-4971-2bfb-ad2d-5af63d44299a.jpeg "6-3")

さて、ここまでは COUNTA 関数の場合と同じですが、 SUBTOTAL 関数を使った場合の特殊な点としてフィルタを使用した際にフィルタ部分で連番になることが挙げられます。
以下の例を見てみましょう。まずはフィルタを適用します。

![WS000271.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/9e3a0380-a568-e747-e691-ec4b5af41739.jpeg "6-4")

ここで例えば「 testA 」のみをフィルタで抽出すると、連番には元の表での番号ではなく、フィルタした部分のみでの連番が付与されます。

![WS000272.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f6afe604-8412-9fae-bd07-b14914b50959.jpeg "6-5")