11/15/2019

Excel。ゼロ付連番を楽に作りたいならExcel VBAでやっちゃいましょう。【Serial number】

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”は。表示形式のユーザー定義でお馴染みの形ですね。

このように、簡単な構文なので、ゼロ付連番を実務で高い頻度で作る場合は、用意しておくと便利ですよ。