教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Format関数の使い方を教えて!

構文

構文は以下の通りです。

Format(値, [書式記号])

解説

Format関数は、指定した値を指定した書式に変換するために使用されます。数値や日付、文字列などさまざまなデータ型を指定した書式に変換することができます。

引数 指定 内容
必須 書式に変換したい値や式を指定します。
書式記号 省略可 変換する書式を指定します。省略すると値はデフォルトの書式で変換されます。設定値を以下で紹介します。

書式記号には以下の設定値が指定できます。

【数値の書式記号】

書式記号 内容 数値例 変換後
##.##  桁があれば表示します。
無い時は表示しません。
123.456 123.46
0000.00 桁があれば表示します。
無い時は0を表示します。
123.456 0123.46
#,##0 3桁ごとの区切りで表示します。 123456789 123,456,789
0.0 小数点で表示します。 12.34 12.3
0.0% 数値を100倍して%記号で表示します。 0.12345 12.3%

【日付の書式記号】

書式記号 内容 日付例 変換後
yyyy 年を表示します。 2020/05/02 2020
yy 20
mm 月を表示します。 05
m 5
dd 日を表示します。 02
d 2
aaa 曜日を漢字1文字で表示
aaaa 曜日を漢字3文字で表示 土曜日
hh 時を表示します。 09:07:03 09
h 9
nn 分を表示します。 07
n 7
ss 秒を表示します。 03
s 3
yyyy/mm/dd 年月日を表示します。 2020/05/29 2020/05/29
yy/mm/dd 20/05/29
yyyymmdd 20200529
yymmdd 200529

【文字列の書式記号】

書式記号 内容
1つの文字またはスペースを表します。変換対象文字列の中で@(アットマーク)に対応する位置に文字が存在する場合は、その文字が表示されます。文字がなければスペースが表示されます。
1つの文字を表します。変換対象文字列の中で&(アンパサンド)に対応する位置に文字が存在する場合は、その文字が表示されます。文字がなければ何も表示せず、詰められて表示されます。

使用例

Format(123.456, "##.##")
Format(123.456, "0000.00")
Format(123456789, "#,##0")
Format(12.34, "0.0")
Format(0.12345, "0.0%")
Format(Now, "yyyy")
Format(Now, "yy")
Format(Now, "mm")
Format(Now, "m")
Format(Now, "dd")
Format(Now, "d")
Format(Now, "yyyy/mm/dd")
Format(Now, "yy/mm/dd")
Format(Now, "yyyymmdd")
Format(Now, "yymmdd")

使い方

具体的な使い方を紹介します。

1.数値の整形

数値を通貨形式やパーセンテージ形式に整形することができます。

通貨形式:Format(12345.67, "¥#,##0") -> ¥12,345
パーセンテージ形式:Format(0.25, "0%") -> 25%

2.日付の整形

日付形式(yyyy/mm/dd):Format(Date, "yyyy/mm/dd") -> 2023/06/19
曜日(日本語表記)を含む日付形式:Format(Date, "yyyy/mm/dd(aaa)") -> 2023/06/19(月)

3.文字列の整形

文字列を特定の形式に整形することもできます。

文字列の左詰め:Format("Hello", "-@@@@@") -> -Hello
文字列の右詰め:Format("World", "@@@@@-") -> World-

プログラミング例

以下に、プログラミング例を紹介します。

Sub FormatExample()
    Dim amount As Double
    amount = 12345.67
    ' 通貨形式に整形して表示
    MsgBox Format(amount, "¥#,##0")
    
    Dim percentage As Double
    percentage = 0.25
    ' パーセンテージ形式に整形して表示
    MsgBox Format(percentage, "0%")
    
    Dim currentDate As Date
    currentDate = Date
    ' 日付形式(yyyy/mm/dd)に整形して表示
    MsgBox Format(currentDate, "yyyy/mm/dd")
   
    Dim greeting As String
    greeting = "Hello"
    ' 文字列の左詰めに整形して表示
    MsgBox Format(greeting, "-@@@@@")
   
    Dim message As String
    message = "World"
    ' 文字列の右詰めに整形して表示
    MsgBox Format(message, "@@@@@-")
End Sub

上記のコードは、数値や日付、文字列をそれぞれ指定した形式に整形して表示する例です。各変数に適切な値を代入し、Format関数を使用してデータを整形します。その後、MsgBox関数を使用して整形結果をダイアログボックスに表示します。

まとめ

Format関数は、数値や日付、文字列などのデータを特定の形式に整形する際に役立ちます。数値の通貨形式やパーセンテージ形式への変換、日付の特定のフォーマットへの整形、文字列の左詰めや右詰めなど、さまざまな整形操作が可能です。是非活用してください。