【VBA】0埋め(ゼロ埋め・ゼロパディング)の方法

システムへのインポートファイル作成や、データのみやすさ向上のために、ゼロ埋めすることがあります。
分かりやすくできるやり方としては、『FORMAT関数を用いる方法』『RIGHT関数を用いる方法』があります。
プログラム紹介していきたいと思いますので、興味ある方はぜひ最後までみてってください。

ゼロ埋めがもしかしたら分からない方のためにざっくり説明すると。

890
23456
を、5桁で0埋めすると。

00003
00890
23456
とする処理のことをいいます。

記事を書いた人

こんにちは。当ブログの管理人の『くろん』です。
30代サラリーマン、新規事業推進室に所属。ブラック企業努め時代に身に着けた業務効率化ノウハウをアウトプットしていきます。
読んでくれた方の業務が一秒でも早く終わりますようにの精神で記事書いてます!!

スポンサーリンク
目次

FORMAT関数を用いたVBAによる0埋め

さて、このA列の数字を、B列は5桁で0埋め、C列は10桁で0埋めしていこうと思います。
このシートの名前は、『0埋め』です。

Sub ZeroPadding()
    ' シート「0埋め」を定義
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("0埋め")

    ' A列のデータを読み込むための変数定義
    Dim cell As Range

    ' A列のデータを2行目から最後の行までループ処理
    For Each cell In ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
        ' B列とC列のセル書式をテキスト形式に設定
        cell.Offset(0, 1).NumberFormat = "@"
        cell.Offset(0, 2).NumberFormat = "@"

        ' A列の値を読み取り、B列に5桁の0埋めで出力
        cell.Offset(0, 1).Value = Format(cell.Value, "00000")
        ' A列の値を読み取り、C列に10桁の0埋めで出力
        cell.Offset(0, 2).Value = Format(cell.Value, "0000000000")
    Next cell

    ' 処理完了メッセージ
    MsgBox "0埋め処理が完了しました。", vbInformation
End Sub

一つ注意点としては、B列とC列は最初はセル書式が『標準』だと思うのですが、『標準』だと文字列の最初が『0』は自動的に消されてしまうので、セル書式を『テキスト形式』にする必要があります。

↑セル書式が『標準』で、文字列の最初の『0』が消されてしまった。。。

↓こちらが、さきほどのVBAを動かした結果になります。

いい感じに『0埋め』できてることが確認できましたね!

RIGHT関数を用いたVBAによる0埋め

同じように、今度は『RIGHT関数』を用いたプログラムで『0埋め』していこうと思います。

Sub ZeroPadding()
    ' シート「0埋め」を定義
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("0埋め")

    ' A列のデータを読み込むための変数定義
    Dim cell As Range

    ' A列のデータを2行目から最後の行までループ処理
    For Each cell In ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
        ' B列とC列のセル書式をテキスト形式に設定
        cell.Offset(0, 1).NumberFormat = "@"
        cell.Offset(0, 2).NumberFormat = "@"

        ' A列の値を読み取り、B列に5桁の0埋めで出力
        cell.Offset(0, 1).Value = Right("00000" & cell.Value, 5)
        ' A列の値を読み取り、C列に10桁の0埋めで出力
        cell.Offset(0, 2).Value = Right("0000000000" & cell.Value, 10)
    Next cell

    ' 処理完了メッセージ
    MsgBox "0埋め処理が完了しました。", vbInformation
End Sub

解説すると、『0埋め』したい数字の左側に『0埋め』したい桁数の『0』を付与します。5桁なら『00000』ですね。
そうして出来上がった文字列に対して、右側から『0埋め』したい桁数分だけ『RIGHT関数』で抜き取ります。
すると、ちょうど『0埋め』した文字列となるという仕組みです。

『123』→『00000123』→『00123』
という流れです。

VBAで『0埋め』する方法まとめ

『FORMAT関数を用いる方法』と『RIGHT関数を用いる方法』で、『0埋め』の方法を紹介させていただきました!
どちらのやり方であっても、変わらない結果を得ることができるので、覚えやすい方でやっていただければと思います。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次