Excel VBAの「Format関数」について解説します。
Format関数とは
Excel VBA の Format関数とは、引数の値(式)を指定した書式に変換した文字列で返す関数です。
Format関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を理解しておくことが重要です。
構文
Format(Expression, [Format], [FirstDayOfWeek], [FirstWeekOfYear])
日本語で表示すると
Format(式, [書式], [週の最初の曜日], [年の最初の週])
※ []で囲まれている引数は省略可能です。
引数
Format 関数の引数(指定項目)の詳細は次のとおりです。
引数(指定項目) | 説明 |
---|---|
Expression | 【必須】任意の式(値)を指定します。 |
Format | [省略可能] ユーザー定義または表示書式指定文字を指定します。 |
FirstDayOfWeek | [省略可能] 週の始まりの曜日を定数または値で指定します。 |
FirstWeekOfYear | [省略可能] 年の開始第1週を定数または値で指定します。 |
※ FirstDayOfWeek と FirstWeekOfYear を使うケースはほとんどないといってもいいでしょう。
※ Format については[省略可能]となっていますが、実質的には必須と言っても良い引数です。
これを指定しないと、Format関数を使う意味がありませんから(^^;
戻り値
第一引数 expression で指定した式(値)を第二引数 format で指定した形式の文字列で返します。
※ 詳しい指定方法については次項以降で解説していきます。
解説
それぞれの引数の設定方法や定数一覧などの詳細について見ていきます。
引数 Expression について
第一引数 Expression は必須です。書式を設定したい「値」を直接指定するか、「式」を使って指定します。セル参照や変数を指定するなど、いろいろな方法が使えます。
引数 Format について
Format で表示したい書式を設定します。書式設定の対象は次のとおりです。
書式設定の対象 | 説明 |
---|---|
数値 | 定義済みの名前付き数値書式を使用するか、 ユーザー定義の数値書式を作成します。 |
日付と時刻 | 定義済みの名前付き日付/時刻書式を使用するか、 ユーザー定義の日付/時刻書式を作成します。 |
日付と時刻の連続番号 | 日付および時間書式または数値書式を使用します。 |
文字列 | ユーザー定義文字列書式を作成します。 |
引数 Format には文字数の制限があります。257 文字を超えた文字列は切り捨てられます。
定義されていない数値文字列に書式設定する場合、目的の書式を実現するには、ユーザー定義数値書式を使用する必要があります。
引数 [firstdayofweek] の定数
引数 firstdayofweek に使う定数と値の設定がこちらです。
定数 | 値 | 説明 |
---|---|---|
vbUseSystem | 0 | 各国語サポート(NLS)APIの設定値 |
vbSunday | 1 | 日曜日 (既定) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
引数 [firstweekofyear] の定数
引数 firstweekofyear に使う定数と値の設定はこちらです。
定数 | 値 | 説明 |
---|---|---|
vbUseSystem | 0 | 各国語サポート(NLS)APIの設定値を使用します。 |
vbFirstJan1 | 1 | 1 月 1 日が含まれる週から開始します (既定)。 |
vbFirstFourDays | 2 | 4 日以上が含まれる最初の週が年の第 1 週目です。 |
vbFirstFullWeek | 3 | 1 週間全体が含まれる最初の週がその年の第 1 週目です。 |
「数値」に関する書式指定
「定義済み書式」と「ユーザー定義書式」に分けて見ていきましょう。
定義済みの名前付き「数値」書式
次の表は、定義済みの数値の書式名を示します。
書式名 | 説明と書式例 | 表示結果 |
---|---|---|
General Number | 桁区切り記号を付けずに数を表示します。 コード例: Format(12345.678, “General Number”) | 12345.678 |
Currency | 通貨記号、桁区切り記号を付けて数を表示します。 出力はシステム ロケール設定に基づきます。 コード例: Format(12345.678, “Currency“) | \12,346 |
Fixed | 整数部を最低1桁、小数部を2桁で表示します。 コード例: Format(12345.678, “Fixed“) | 12345.68 |
Standard | 整数部を最低1桁、小数部を2桁、区切記号付で表示します。 コード例: Format(12345.678, “Standard“) | 12,345.68 |
Percent | 数値を100倍して、右側にパーセント記号(%)を付けて 小数部は常に2桁で表示します。 コード例: Format(12345.678, “Percent“) | 1234567.80% |
Scientific | 標準の指数表記を使用します。 コード例: Format(12345.678, “Scientific“) | 1.23E+04 |
Yes/No | 数値が 0 の場合は No それ以外は Yes を表示します。 コード例: Format(12345.678, “Yes/No“) | Yes |
True/False | 数値が 0 の場合は False それ以外は True を表示します。 コード例: Format(12345.678, “True/False“) | True |
On/Off | 数値が 0 の場合は Off それ以外は On を表示します。 コード例: Format(12345.678, “On/Off“) | On |
ユーザー定義「数値」書式
次の表は、ユーザー定義「数値」書式の作成に使用する文字記号の一覧です。
文字 | 説明と書式例 | 表示結果 |
---|---|---|
なし | 書式指定なしで数値を表示します。 コード例: Format(12345.678) | 12345.678 |
(0) | 桁があればその数字を表示します。ないときは 0 を表示します。 不足桁数分は(整数は先頭、小数は末尾を) 0 で埋めます。 コード例: Format(12345.678, “000000.0000”) | 012345.6780 |
(#) | 桁があればその数字を表示します。ないときは表示しません。 整数の # 指定は、個数にかかわらず全数字を表示します。 小数の場合は、指定した # の数の桁を表示します。 コード例: Format(12345.678, “#.##”) | 12345.68 |
(.) | (.)+表示桁数を(#)や(0)で措定します。 コード例: Format(12345.678, “.###0”) | 12345.6780 |
(%) | 数値を 100 倍してパーセント記号(%)を表示します。 コード例: Format(12345.678, “.##%”) | 1234567.8% |
(,) | 1,000 単位の区切り記号です。 桁区切り記号が 0 または # で囲まれている場合が標準使用です。 コード例: Format(12345.678, “00,000”) 整数の末尾に例のように (,) を指定した場合、1000で除算した 表示にできます。(,,) なら百万で除算した表示になります。 コード例: Format(12345.678, “#,”) | 12,346 12 |
(:) | 時刻(時、分、秒)を区切る際に使用します。 コード例: Format(Now(), “hh:nn:mm”) | 02:47:10 |
(/) | 日付値(年、月、日)を区切る際に使用します。 コード例: Format(Now(), “yyyy/mm/dd”) | 2023/10/15 |
(\) | リテラル文字を表示する際のエスケープ文字です。 円記号を \ を表示させる場合、\\ と記述します。 コード例: Format(12345.678, “\\#,#”) | \12,346 |
(文字) | 文字列はそのまま表示します。 コード例: Format(12345.678, “整数値は0”) | 整数値は12346 |
「日付/時刻」に関する書式指定
同じく「定義済み書式」と「ユーザー定義書式」に分けて見ていきます。
定義済みの名前付き「日付/時刻」書式
以下の表は、定義済みの「日付/時間」の書式名の一覧です。
書式名 | 説明 | 表示例 |
---|---|---|
General Date | システム設定に依存する日付時刻を表示します。 小数の部分がない場合、日付だけを表示します。 整数の部分がない場合、時間のみを表示します。 コード例: Format(Now(), “General Date“) | 2023年10月15日 17:31 |
Long Date | システムの長い日付形式で日付を表示します。 | 2023年10月15日 |
Medium Date | ホスト アプリケーションの言語バージョンで、 中間の長さの日付書式で日付を表示します。 | 23-10-15 |
Short Date | システムの短い日付書式で日付を表示します。 | 2023/10/15 |
Long Time | システムの長い時間形式で時間を表示します。 時間、分、秒が含まれます。 | 16:45:25 |
Medium Time | 12時間の書式に午前/午後を付けて表示します。 | 04:45 午後 |
Short Time | 24時間の形式を使用して時間を表示します。 | 16:45 |
ユーザー定義「日付」書式
次の表は、ユーザー定義「日付」書式の作成に使用する記号一覧です。
記号 | 範囲 |
---|---|
d | 1 〜 31 (前に 0 を付けない、月の日付) |
dd | 01 〜 31 (前に 0 を付ける、月の日付) |
w | 1 〜 7 (週の曜日。土曜日 = 1 から開始) |
ww | 1 〜 53 (1年のうちで何週目かを表す数値) |
m | 1 〜 12 (月。前に 0 を付けず、1 月 = 1 から開始) |
mm | 01 〜 12 (月。前に 0 を付け、1 月 = 01 から開始) |
mmm | 月の省略名を表示します。 |
mmmm | 完全な月名を表示します。 |
q | 年の四半期を数値 (1 から 4) として表示します。 |
y | 1 〜 366 (1 年のうちで何日目かを表す数値) |
yy | 00 〜 99 (西暦年の下 2 桁) |
yyyy | 100 〜 9999 (3 桁または 4 桁の西暦年) |
aaa | 曜日を示す文字を表示します。 |
aaaa | 曜日を示す文字を(曜日を付けて)表示します。 |
oooo | 月の名前を付けて(1月~12月)表示します。 |
ユーザー定義「時刻」書式
次の表は、ユーザー定義「時刻」書式の作成に使用する記号一覧です。
記号 | 範囲 |
---|---|
h | 0 〜 23 ( 前に0を付けない、AM または PM を追加した1〜12の数値) |
hh | 00 〜 23 (前に0を付ける、AMまたはPMを追加した01 〜 12の数値) |
n | 0 〜 59 (前に0を付けない、1時間の中の分) |
nn | 00 〜 59 (前に0を付ける、1時間の中の分) |
m | 0 〜 59 (前に0を付けない、1時間の中の分) h または hh が先行する場合のみ |
mm | 00 〜 59 (前に0を付ける、1時間の中の分) h または hh が先行する場合のみ |
s | 0 〜 59 (前に0を付けない、1分の中の秒) |
ss | 00 〜 59 (前に0を付ける、1分の中の秒) |
AM/PM | 12時間形式で大文字の AM または PM を付けて表示します。 |
am/pm | 12時間形式で小文字の am または pm を付けて表示します。 |
ユーザー定義「文字列」書式で設定
ユーザー定義書式に使用できる主な文字の一覧です。
文字 | 説明 |
---|---|
@ | 対象文字列の @ の表示位置に該当する文字、ない場合はスペースを返します。 |
& | 対象文字列の & の表示位置に該当する文字を返し、ない場合何も返しません。 |
< | すべての文字を小文字で表示します。 |
> | すべての文字を大文字で表示します。 |
! | 文字列を左から右に向かって埋めるようにします。(既定は、右から左) |
「@」と「!」の動作がわかりにくいのでサンプルでテストしてみます。
Sub Format_test()
Debug.Print Format(123, "@+@=@です")
Debug.Print Format(123, "@×@=@ではありません")
Debug.Print Format(123, "@")
Debug.Print Format(123, "@@")
Debug.Print Format(123, "@@@")
Debug.Print Format(123, "@@@@")
Debug.Print Format(123, "@@@@@")
Debug.Print Format(123, "!@")
Debug.Print Format(123, "!@@")
Debug.Print Format(123, "!@@@")
Debug.Print Format(123, "!@@@@")
Debug.Print Format(123, "!@@@@@")
End Sub
このようにサンプルテストしてみると、どんな働きをするのか確認できますね。
Format関数を使っている例
Format関数を利用している過去の記事をいくつか貼っておきます。よろしければご覧ください。
おわりに
Excel VBA「Format関数」は、式(値)を指定した書式の文字列で返す関数です。その使用方法について解説しました。
VBAを使っていると、必ずと言っていいほど他関数の「戻り値」をFormat関数でさらに書式設定して値を得たりする場面に出会います。逆に、書式設定した値を引数に使うことも非常に多いと思います。
「数値」「日付と時刻」「文字列」などの定義済み書式やユーザー定義書式を一覧で紹介していますので、実際に書式設定に使用する場合に活用いただければ幸いです。
Excel ワークシートのセルに書式設定をする場合に使う「セルの書式設定」ダイアログで色々な表示形式を確認することができます。是非参考になりますので再確認していただければと思います。
この解説が、少しでもみなさまのお役に立てたなら幸いです(^^;
VBAサンプルファイルはダウンロードできます
このページで使用したサンプルファイルの登録はありません(^^;
ダウンロードページへトップリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!