ExcelVBA

文字列の前後を空白埋めで 桁数を揃える(Format関数/Right関数)

桁数を揃えないといけない

エクセルVBAを使用し、桁数を揃えたい場合(パディング(埋め)処理)があります。
数値のゼロで埋める事が多いですが、固定長ファイルの場合は半角スペースで埋める必要があります。
0埋めして桁数を揃える(Format関数/Right関数)

■例(既存のレガシーシステムでは固定長でデータを作成し、インポートする必要がある
・固定長ファイルで、文字列の左側を空白で埋めたい
・固定長ファイルで、文字列の右側を空白で埋めたい

桁数を揃えるサンプルコード

Space関数もしくはRight関数 or Left関数を使用し空白埋めして、固定長データにします。
特にこだわりなければSpace関数で処理するのがシンプルでしょう。

コードサンプル

'■指定した文字列を半角スペースで埋めて桁数を揃える
Public Sub sample()
    Dim str As String
    str = "12345" 'こちらのデータを使用し桁数を10桁に揃えたい
        
    '■Space関数を使用する場合
    MsgBox str & Space(10 - LenB(str)) '→"12345     "
    MsgBox Space(10 - LenB(str)) & str '→"     12345"
 
    '■LeftB関数 or RightB関数を上手く使う場合
    MsgBox LeftB(str & "          ", 10)   '→"12345     "
    MsgBox RightB("          " & str, 10)  '→"     12345"
End Sub

注意事項

  • 今回は「12345」と数値の文字列データでしたが、Long型等の数値データでも結果は同様です。
  • いわゆる文字列データ「例:あいうえお」でも結果は同様です。
    (ただし、「あいうえお」は2バイト文字x5文字なので=10バイトなので空白は付与されません)
  • 全角スペースの場合はSpace関数では行えません。String関数で全角スペースを付与してください。

関連記事

半角スペース埋めではなく、ゼロ埋めしたい場合は下記記事参照ください。
0埋めして桁数を揃える(Format関数/Right関数)

 

コメント

タイトルとURLをコピーしました