Excel VBA 商品コードや会員番号などを表す数値の桁を揃える

データの中で、商品コードや会員番号などを表すデータは数値の桁数を「5桁」や「6桁」のように揃えたほうがデータとして扱いやすくなります。ここでは、数値の手前に指定した桁数になるように文字列の「0」を詰字して数値の桁数を揃える方法について説明します。ちなみに、見た目は数値ですが、最初に0が表示されるので、データ型としては文字列型になります。

スポンサーリンク

A列の数値に0の詰字をして5桁に統一する実行結果

A列の数値に0の詰字をして5桁に統一するコードと解説

Sub 桁統一()
Dim 桁 As Integer
Dim 詰字 As String
Dim 最終行 As Long
Dim i As Long
   桁 = 5
   詰字 = "0"
   最終行 = Cells(Rows.Count, 1).End(xlUp).Row
 For i = 2 To 最終行
   Cells(i, 1).NumberFormatLocal = "@"
   Cells(i, 1).Value = Right(String(桁, 詰字) & Cells(i, 1).Value, 桁)
   Cells(i, 1).Errors.Item(xlNumberAsText).Ignore = True
 Next i
End Sub

2行目【Dim 桁 As Integer】
合わせる桁数を格納する変数「桁」を整数型(Integer)で宣言します。


3行目【Dim 詰字 As String】
桁を合わせるための詰字の文字列を格納する変数「詰字」を文字列型(String)で宣言します。


4行目【Dim 最終行 As Long】
A列のデータが入力されている最終行番号を格納する変数「最終行」を長整数型(Long)で宣言します。


5行目【Dim i As Long】
繰り返し処理で使用するセルの行番号を格納するカウンター変数「i」を長整数型(Long)で宣言します。


6行目【桁 = 5】
変数「桁」に5を代入します。桁数を変更する場合はこの値を変更してください。


7行目【詰字 = “0”】
変数「詰字」に文字列の0を代入します。詰字を変更する場合はここを変更してください。


8行目【最終行 = Cells(Rows.Count, 1).End(xlUp).Row】
cells【セルズ】プロパティでA列の最終セルを参照し、End【エンド】プロパティで最終セルから上方向にデータの入力されている最初のセルに移動してRow【ロウ】プロパティでその行番号を取得し、変数「最終行」に代入します。


9行目【For i = 2 To 最終行】
For Next【フォーネクスト】ステートメントで繰り返し処理のはじまりです。カウンター変数「i」に1行目の見出し行を除いた2~変数「最終行」に格納されているA列のデータ数分の数が順次代入されます。


10行目【Cells(i, 1).NumberFormatLocal = “@”】
Range【レンジ】オブジェクトのNumberFormatLocal【ナンバーフォーマットローカル】プロパティを使用し、繰り返し処理の中でA列のセルの値を順次、「文字列型」に変更します。


11行目【Cells(i, 1).Value = Right(String(桁, 詰字) & Cells(i, 1).Value, 桁)】
文字列の右端から指定した文字数分の文字列を取得するRight【ライト】関数を使用して、第一引数の元の文字列に、指定した文字を指定した数、表示するString【ストリング】関数を使用して第一引数の文字数に変数「桁」に格納されている5、第二引数の表示する文字列に変数「詰字」に格納されている0を設定して0が5つの文字列(00000)を取得し、文字を連結するアンパサンド「&」でA列の変数「i」行目の文字列を連結します。変数「i」が2の場合、A列の2行目のセルの値は文字列の1なので、Right【ライト】関数の第一引数の元の文字列は「000001」になります。

Right【ライト】関数の第二引数は、文字列の右端から取り出す文字数になり、ここでは変数「桁」を設定していて変数「桁」は5なので、「000001」の場合は「00001」になります。

その値を繰り返し処理の中でA列の変数「i」行目のセルに代入します。


12行目【Cells(i, 1).Errors.Item(xlNumberAsText).Ignore = True】
セルに数値を文字列型として入力すると「エラーチェックオプション」がセルの左上隅に表示されるので、このエラーチェックオプションのError【エラー】オブジェクトを参照してIgnore【イグノア】プロパティにTrueを設定することでこの「エラーチェックオプション」を無効(非表示)にしています。


13行目【Next i】
9行目からここまでの処理をA列のデータ数分繰り返します。


以上で、商品コードや会員番号などを表す数値の桁を揃える方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告