VBA Format 関数:書式や形式を指定して文字列に変換する

はじめに

Excel VBA マクロの Format 関数から書式や形式を指定して文字列に変換する方法を紹介します。

Format 関数は、数値や日付を指定した書式や形式で文字列型 (String) に変換します。

数値の 1234 なら 1,234 のように文字列に変換できます。

日付の 2000/1/2 なら 2000年01月02日 のように文字列に変換できます。

数値や日付を指定の形式に変換したいときに使用します。

数値を文字列に変換するには「数値を変換する」をご覧ください。
日付を文字列に変換するには「日付を変換する」をご覧ください。
  • 目次
    • Format 関数
    • 解説
    • 使用例

Format 関数

Format()
をそのまま文字列に変換します。

Format(, 書式)
書式の形式で文字列に変換します。

引数「値」数値や日付などを指定します。
引数「書式」省略できます。書式を指定します。
戻り値の型文字列型 (String)

引数「書式」

引数「値」が数値の 12345 のとき

書式 結果 説明
####,###12,345桁があればそれを表示します。ないときは何も表示しません。
0000,000012,345桁があればそれを表示します。ないときは 0 を表示します。
%0.0%1234500.0%数値を 100 倍し % 記号を表示します。
\\\\0\12345\ 記号を表示します。
文字最大0最大12345そのまま文字を表示します。

引数「値」が日付の 2013/1/2 3:4:56 のとき

書式 結果 説明
yyyyy2013年を表示します。書式 1 つが下 1 桁を表しています。
mmm01月を表示します。
mm のようにすると必ず 2 桁で表示します。日時分秒でも同じです。
dd2日を表示します。
hhh03時を表示します。
nn4分を表示します。
ss56秒を表示します。

紹介している書式は一部です。書式は Excel の表示形式とほぼ同じです。その他の書式について詳しくは次をご覧ください。

解説

通常は引数「書式」を指定して、数値や日付を文字列に変換する目的で使用します。

引数「値」が数値なら、数値の書式が適用されます。

引数「値」が Boolean 型なら、数値に変換できるので数値の書式が適用されます。

引数「値」が日時なら、日付の書式が適用されます。

引数「書式」を省略したときは、引数「値」をそのまま文字列にします。「CStr 関数」では Null がエラーになりますが、Format 関数は空文字を返します。

引数「書式」に #0 を指定すると、それより小さい桁を四捨五入できます。

四捨五入や切り捨てをするには「Round 関数」をご覧ください。

使用例

数値の書式

数値の形式を指定して文字列に変換する。

Dim c As Currency
c = 1234567

Debug.Print(Format(c,"###,###,###")) ' 1,234,567

Debug.Print(Format(c,"000,000,000")) ' 001,234,567

Debug.Print(Format(c,"#,###")) ' 1,234,567

Debug.Print(Format(c,"0,000")) ' 1,234,567

Debug.Print(Format(c,"0"))         ' 1234567

Debug.Print(Format(c,"#,###.00"))  ' 1,234,567.00

Debug.Print(Format(c, "0.00%"))    ' 123456700.00%

Debug.Print(Format(c, "\\#,###"))  ' \1,234,567、円マーク

Debug.Print(Format(c, "#,###円"))  ' 1,234,567円

日付の書式

日付の形式を指定して文字列に変換する。

Dim d As Date
d = "2013/1/2 3:4:56"

Debug.Print(Format(d,"yy年"))           ' 13年

Debug.Print(Format(d,"yyyy年mm月dd日")) ' 2013年01月02日

Debug.Print(Format(d,"ggge年mm月dd日")) ' 平成25年01月02日

Debug.Print(Format(d,"yyyy/m/d"))       ' 2013/1/2

Debug.Print(Format(d,"hh:nn:ss"))       ' 03:04:56

Debug.Print(Format(d,"h:n:s"))          ' 3:4:56

四捨五入

#0 を指定して四捨五入できます。

Debug.Print(Format(1.5, "#"))    ' 2
Debug.Print(Format(1.5, "0"))    ' 2

Debug.Print(Format(2.5, "#"))    ' 3
Debug.Print(Format(2.5, "0"))    ' 3

Debug.Print(Format(3.5, "#"))    ' 4
Debug.Print(Format(3.5, "0"))    ' 4

Debug.Print(Format(0.25, "#.#")) ' .3
Debug.Print(Format(0.25, "0.0")) ' 0.3