Excel。ゼロ付連番を楽に作りたいならExcel VBAでやっちゃいましょう。
<Excel VBA>
通し番号を1から連番で作るとしたらオートフィルを使った連続データという方法がありますが、件数が少なければ、オートフィルでもいいのですが、データの件数が増えてしまうと、少々面倒になってしまいます。また、通し番号が、「001」というような、いわゆる【ゼロ付数字】で表示したい場合は、表示形式のユーザー定義を設定してあげる必要が発生します。
些細な処理かもしれませんが、この処理が比較的頻繁に発生するのであれば、Excel VBAでマクロを作って実行するのが、意外に楽だと思います。
そこで、今回は、3つのパターンを確認してきましょう。
A列は、通常の通し番号です。
B列は、ゼロ付連番ですが、文字型のゼロ付連番です。
C列は、ゼロ付連番ですが、表示形式を使って、数値に「0」が表示されるようにしています。
Sub 零つき連番()
Dim i As Integer
‘A列
For i = 2 To 11
Cells(i, "a") = i - 1
Next i
End Sub
実行してみましょう。
数行の構文で完成しました。
簡単に説明すると、
For To Next文で繰り返します。
今回は、10件としたいので、2~11としています。
Cells(i, "a") = i - 1
説明が不要なぐらい簡単な一文ですね。A2に1を代入する。
これを繰り返しているわけですね。
このようなプログラムを用意しておくだけでも、作業効率は改善することができますね。実際処理してみると、オートフィルを使って算出するよりも早いと思われます。
続いてB列
Sub 零つき連番()
Dim i As Integer
‘A列
For i = 2 To 11
Cells(i, "a") = i - 1
‘B列
Cells(i, "b").NumberFormat = "@"
Cells(i, "b") = Right("00" & i - 1, 3)
Next i
End Sub
実行して確認してみましょう。
ゼロ付連番の文字列型で算出することができました。
構文を説明します。
Cells(i, "b").NumberFormat = "@"
NumberFormatプロパティは、表示形式を設定することができる、プロパティです。
今回は、文字列型にしたかったので、= "@"としています。
これで、このセルに入るデータは文字列型になるようにしています。
そして、次の行で、ゼロ付にしています。
Cells(i, "b") = Right("00" & i - 1, 3)
Rigjt関数を使っているのかというと、数値の前に”00”を付けると、1は、001となるのですが、10は0010となってしまうので、右側から3文字分を残すようにしています。
なお当然のことながら、表示形式を設定する行が先にしなければいけません。
最後は、ゼロ付連番ですが、こちらは、数値。
では構文を確認してみましょう。
Sub 零つき連番()
Dim i As Integer
‘A列
For i = 2 To 11
Cells(i, "a") = i - 1
‘B列
Cells(i, "b").NumberFormat = "@"
Cells(i, "b") = Right("00" & i - 1, 3)
‘C列
Cells(i, "c").NumberFormatLocal = "000"
Cells(i, "c") = i - 1
Next i
End Sub
B列は文字列型にしましたが、今回は、数値型にしています。
Cells(i, "c").NumberFormatLocal = "000"
“000”は。表示形式のユーザー定義でお馴染みの形ですね。
このように、簡単な構文なので、ゼロ付連番を実務で高い頻度で作る場合は、用意しておくと便利ですよ。