【2026年8月最新】VBA Format関数の使い方完全ガイド|日付・時刻・数値・文字列の表示設定と和暦・曜日の書式指定
「VBA Format 使い方」で検索してこの記事にたどり着いた方の多くは、Excelの請求書や日報、集計表を自動化するマクロを組んでいて、日付や数値の見た目がどうしても思い通りにならないという壁にぶつかっているのではないでしょうか。
VBAのFormat関数は、日付・時刻・数値・文字列を「人間が読みやすい形」に変換する関数です。和暦(令和表記)や曜日、ゼロ埋めの伝票番号、桁区切りの金額表示など、業務システムで頻出する表示パターンのほとんどをこの関数1つでカバーできます。ただし、書式指定文字の組み合わせが非常に多く、「mmと書いたのに月ではなく分になった」「和暦のコードが分からない」といった落とし穴も多い関数です。
この記事では、Format関数の正確な使い方を日付・時刻・数値・文字列の4パターンで徹底解説します。そのうえで、非エンジニアの経営者・管理職が書式指定文字を1つずつ暗記するより、Claude Codeにマクロそのものを書かせた方が合理的な理由を、弊社(株式会社GENAI)の実運用データとともにお伝えします。
この記事を最後まで読むと、次の6つが明確になります。
01 BACKGROUND Format関数とは何か、なぜ苦手意識を持つ人が多いのか 「表示形式」を自在に操る関数の役割と、つまずきやすいポイント
VBA(Visual Basic for Applications)は、Excel・Word・Accessなどのマイクロソフト製オフィスソフトに搭載されているプログラミング言語です。請求書の自動作成、日報の集計、大量データの転記といったマクロを組む際に使われます。
📚 用語解説
VBA(Visual Basic for Applications):Excelなどのオフィスソフトに組み込まれたプログラミング言語。ボタン1つで請求書を発行したり、大量データを集計したりする「マクロ」を作成するために使われます。専門のエンジニアでなくても、経理・総務担当者が独学で書いているケースが多い言語です。
📚 用語解説
マクロ(macro):Excelなどの操作手順をプログラムとして記録・自動化したもの。VBAで書かれたマクロを実行すると、人間が手作業でクリックしていた処理(集計・転記・書式設定など)を一瞬で終わらせられます。
VBAでセルに値を表示するとき、数値や日付は内部的には「数字の羅列」として保持されています。これを「2026/07/31」や「令和8年7月31日」のように人間が読みやすい見た目に変換するのがFormat関数の役割です。
📚 用語解説
Format関数:VBAで日付・時刻・数値・文字列を、指定した表示形式(書式)に変換して文字列として返す関数。構文はFormat(変換したい値, "書式指定文字列")で、書式指定文字列の組み合わせ次第で表示のパターンを自由に設計できます。
1-1. Format関数の基本構文
Format関数の構文はシンプルです。
Format関数の基本構文
Format(expression, format)
' expression: 変換したい値(日付・数値・文字列)
' format : 表示形式を指定する文字列(省略可)
' 使用例
MsgBox Format(Date, "yyyy/mm/dd") ' → 2026/07/31
MsgBox Format(1234, "#,##0") ' → 1,234
第1引数(expression)に変換したい値、第2引数(format)に「どう表示したいか」を書式指定文字の組み合わせで指定します。第2引数を省略すると、値の種類に応じた標準の表示形式(初期設定の日付や数値の見た目)がそのまま返されます。
1-2. なぜFormat関数でつまずく人が多いのか
sejuku.netなどの学習サイトでも解説されている通り、Format関数自体の構文は難しくありません。つまずきの原因は、書式指定文字の種類が非常に多く、しかも文脈によって意味が変わるものがあることにあります。特に「日付のmm(月)」と「時刻のmm(分)」が同じ文字でありながら文脈で意味が変わる点は、経験者でも一度は間違えるポイントです(詳しくは第2章で解説します)。
Format関数のエラーは実行時にメッセージで気づけますが、「和暦の表示がずれる」「分のはずが月の数字になっている」といった見た目だけがおかしいバグは、コードがエラーなく動いてしまうため発見が遅れがちです。請求書や給与明細など、対外的に見せる書類で発生すると信頼問題に直結します。
02 DATE & TIME 日付・時刻の表示設定を完全網羅(和暦・曜日を含む) 書式指定文字の一覧と、和暦・曜日表示の正確なコード
まずは日付・時刻に関する書式指定文字の全体像を一覧で押さえましょう。
| 書式指定文字 | 意味 | 表示例 |
|---|---|---|
| yyyy | 西暦4桁 | 2026 |
| yy | 西暦下2桁 | 26 |
| mm | 月(2桁ゼロ埋め) | 07 |
| m | 月(ゼロ埋めなし) | 7 |
| dd | 日(2桁ゼロ埋め) | 31 |
| d | 日(ゼロ埋めなし) | 31 |
| aaa | 曜日(1文字・和名) | 金 |
| aaaa | 曜日(フル・和名) | 金曜日 |
| ggg | 元号(フル名称) | 令和 |
| gg | 元号(漢字1文字) | 令 |
| e | 和暦年(ゼロ埋めなし) | 8 |
| hh | 時(2桁ゼロ埋め) | 09 |
| nn | 分(2桁ゼロ埋め) | 05 |
| ss | 秒(2桁ゼロ埋め) | 30 |
📚 用語解説
書式指定文字:Format関数の第2引数に書く、表示形式を表す記号の総称。yyyy(西暦4桁)やmm(月2桁)のように、組み合わせて自由な表示パターンを作れます。大文字・小文字を区別しないものが多いですが、意味を明確にするため本記事ではすべて小文字で統一しています。
2-1. 基本的な日付表示
基本的な日付表示のパターン
' 2026年7月31日 を各パターンで表示
MsgBox Format(#7/31/2026#, "yyyy/mm/dd") ' → 2026/07/31
MsgBox Format(#7/31/2026#, "yyyy年m月d日") ' → 2026年7月31日
MsgBox Format(#7/31/2026#, "yy/m/d") ' → 26/7/31
yyyyとyy、mmとm、ddとdのように、2文字はゼロ埋めあり、1文字はゼロ埋めなしという規則で統一されています。請求書番号や統一フォーマットの帳票では2文字(ゼロ埋めあり)、画面表示など見やすさ重視の場面では1文字(ゼロ埋めなし)を使い分けるのが実務での目安です。
2-2. 和暦(元号)で表示する設定
日本の商習慣では、契約書や社内文書で和暦表記が求められる場面が今も多くあります。VBAではg系の書式指定文字を使うことで、西暦から自動的に和暦へ変換できます。
和暦(元号)表示の書式
MsgBox Format(#1/1/2026#, "ggge年m月d日") ' → 令和8年1月1日
MsgBox Format(#1/1/2026#, "gge年m月d日") ' → 令8年1月1日
MsgBox Format(#1/1/2026#, "ge年m月d日") ' → R8年1月1日
📚 用語解説
和暦(元号)表示コード:gggは元号のフル名称(令和)、ggは元号を漢字1文字に短縮(令)、gは元号をアルファベット1文字に短縮(R)で表示します。eは元号が変わった年からの通算年数(和暦年)を表し、2026年は令和元年(2019年)から数えて令和8年にあたります。ゼロ埋めしたい場合はeeを使います。
契約書や社内稟議書のテンプレートではFormat(Date, "ggge年m月d日")の形が最もよく使われます。西暦・和暦どちらの表記が必要かは提出先によって異なるため、帳票のセルに直接埋め込むのではなく、表示形式を切り替えられるようにしておくと後々の修正が楽になります。
2-3. 曜日を表示する設定
曜日を日本語で表示したい場合は、aaa系の書式指定文字を使います。
曜日表示の書式
MsgBox Format(#1/1/2026#, "aaa") ' → 木
MsgBox Format(#1/1/2026#, "aaaa") ' → 木曜日
MsgBox Format(#1/1/2026#, "ggge年m月d日(aaa)") ' → 令和8年1月1日(木)
英語圏向けのddd(曜日3文字・Sunなど)やdddd(曜日フル・Sundayなど)という書式指定文字も存在しますが、これらは日本語環境でも英語表記で返る点に注意が必要です。社内向けの日本語帳票で曜日を表示したい場合は、dddではなくaaa系を使うのが正しい選び方です。
dddとaaaの取り違えでした。似ているようで別物、というのがVBAの厄介なところです。2-4. 【落とし穴】mmが「月」ではなく「分」になる条件
日付・時刻のFormat関数で最も多い勘違いが、mmが月を意味するのか、分を意味するのかという問題です。VBAには次のルールがあります。
hまたはhhの直後に置かれたmまたはmmだけが「分」として解釈されます。
それ以外の場所に書かれたmmはすべて「月」として扱われます。
mmの解釈が変わる例
' 正しい例:hhの直後なので「分」として解釈される
MsgBox Format(Now, "hh:mm:ss") ' → 14:05:30(時:分:秒)
' 誤りやすい例:hh/hhが無いため両方とも「月」として解釈される
MsgBox Format(Now, "yyyy/mm/dd mm:ss")
' → 2026/07/31 07:30(本来「分」を表示したいのに「月」が出てしまう)
書式文字列に
mm を記述
直前がh/hh
かを判定
直前がh/hh
→「分」として表示
それ以外
→「月」として表示
時刻部分(hh)を省略した書式文字列で「mm」を分のつもりで書くと、VBAはそれを月として解釈します。分を明示的に表示したい場合は、月と紛れないn(分・ゼロ埋めなし)またはnn(分・ゼロ埋めあり)を使うのが安全です。Format(Now, "yyyy/mm/dd nn:ss")のように書けば、hhが無くても正しく分が表示されます。
時刻を扱う書式では、月にmm、分にnnを使う癖をつけておくと、hh/hhの有無に関係なく常に意図通りの結果になります。「mmは月、nnは分」とセットで覚えるのが、このVBA特有のルールに振り回されない一番確実な方法です。
03 NUMBER FORMAT 数値の表示設定(0埋め・桁区切り・パーセント) 伝票番号・金額・比率を業務帳票らしく整える書式
数値の表示設定も、日付と同様に書式指定文字の組み合わせで自由にコントロールできます。
| 書式指定文字 | 意味 | 入力値 | 表示例 |
|---|---|---|---|
| 0 | 桁数分の0埋め表示 | 5 → "000" | 005 |
| # | 不要な0を表示しない桁 | 5 → "###" | 5 |
| #,##0 | 3桁ごとの桁区切り | 1234567 → "#,##0" | 1,234,567 |
| 0.00 | 小数点以下の桁数固定 | 3.14159 → "0.00" | 3.14 |
| 0% | パーセント表示(×100) | 0.256 → "0.0%" | 25.6% |
3-1. 0埋めで表示する設定
伝票番号や社員コードなど、桁数を揃えて表示したい場面では0を使います。
0埋めの例
MsgBox Format(5, "000") ' → 005
MsgBox Format(42, "00000") ' → 00042
MsgBox Format(1234, "000") ' → 1234(桁数を超える場合はそのまま表示)
0:その桁に数字が無い場合はゼロを表示(ゼロ埋め)#:その桁に数字が無い場合は何も表示しない3-2. 桁区切り・小数点以下の桁数を設定
見積書や請求書の金額表示では、3桁ごとのカンマ区切りが必須です。#,##0という書式で実現できます。
桁区切り・小数点・パーセントの例
MsgBox Format(1234567, "#,##0") ' → 1,234,567
MsgBox Format(1234567, "¥#,##0") ' → ¥1,234,567
MsgBox Format(3.14159, "0.00") ' → 3.14
MsgBox Format(0.256, "0.0%") ' → 25.6%
小数点以下の桁数は、書式指定文字列の0の数で決まります。0.00なら小数点以下2桁、0.0000なら4桁です。指定した桁数を超える部分は四捨五入されます。パーセント表示(%)を使うと、元の数値は自動的に100倍された上で%記号が付く点にも注意してください。
請求書の金額欄には"¥#,##0"、達成率のようなパーセント表示には"0.0%"を使うのが定番です。桁区切り(,)とゼロ埋め(0)は同時に使うこともでき、"0,000"のように組み合わせれば、ゼロ埋めしながら3桁カンマ区切りも行う書式として機能します。
04 STRING FORMAT 文字列の表示設定と大文字・小文字変換 余白埋め・切り詰め・大文字小文字を統一する書式
Format関数は日付や数値だけでなく、文字列の表示形式を整える用途でも使えます。
| 書式指定文字 | 意味 | 入力値 | 表示例 |
|---|---|---|---|
| @ | 文字が無い位置に半角スペースを補う | "AB" → "@@@@@" | " AB"(前に半角スペース3つ) |
| & | 文字が無い位置には何も補わない | "AB" → "&&&&&" | "AB" |
| < | すべて小文字に変換 | "ABC" → "<" | abc |
| > | すべて大文字に変換 | "abc" → ">" | ABC |
文字列の表示設定の例
MsgBox Format("AB", "@@@@@") ' → " AB"(5文字幅、前を半角スペースで埋める)
MsgBox Format("abc", ">") ' → ABC
MsgBox Format("ABC", "<") ' → abc
社員コードや商品コードのように入力形式が統一されていないデータを帳票に出力する際、>や<で大文字・小文字を強制的に揃えておくと、表記ゆれによる検索漏れや突合ミスを防げます。
📚 用語解説
ゼロ埋め(0埋め):数値や文字列の桁数を揃えるために、空いている桁に「0」を補って表示すること。伝票番号「5」を「005」のように3桁に揃える処理が典型例です。VBAでは数値のゼロ埋めに0を、文字列の余白埋めには@を使います。
Format関数の文字列用途はあまり知られていませんが、固定長のテキストファイルを出力する処理(相手先システムに合わせて桁数を固定する必要がある場合など)で重宝します。使用頻度は日付・数値ほど高くありませんが、覚えておくと役立つ場面があります。
05 COST COMPARISON 【独自】経営目線で見る「書式暗記」対「AIに書かせる」コスト比較 経営者・管理職がFormat関数の書式を全部覚える必要は本当にあるか
ここまでFormat関数の正確な書式を解説してきましたが、率直に言うと、非エンジニアの経営者・管理職が、すべての書式指定文字を暗記する必要性は低いというのが弊社の立場です。理由を整理します。
5-1. 「使いこなせる」までの現実的な工数
日付・数値・文字列の主要な書式パターンだけであれば数十分で覚えられますが、実際の業務システムでは「和暦と西暦を切り替える」「mmとnnを取り違えない」「桁区切りとゼロ埋めを併用したい」といった組み合わせの判断が求められます。エラーが出ないバグ(表示だけがおかしい)を自力でデバッグできるレベルに達するには、ある程度のVBA経験の蓄積が必要です。
| 選択肢 | 習得・実行までの時間目安 | 得られるもの | 経営者本人の負荷 |
|---|---|---|---|
| 自分でVBAを学ぶ | 独学で数十〜100時間規模 | マクロが自分で読み書きできる安心感 | 高い(本業を圧迫) |
| エンジニアを新規雇用する | 採用活動〜数ヶ月 | 専任担当者の確保 | 中(採用・マネジメントコスト) |
| 外部エンジニアに都度依頼 | 依頼のたびに見積・待ち時間 | 必要なときだけの対応 | 中(都度の調整コスト) |
| Claude Codeにマクロ作成を任せる | 導入初日から利用可能 | コード生成・書式修正・エラー調査の即時対応 | 低(指示を出すだけ) |
もちろん、Claude Codeが全てのケースで人間のエンジニアの代わりになるわけではありません。基幹システムに組み込む大規模なマクロや、責任の所在が明確に必要な契約案件では専門エンジニアの関与が引き続き必要です。それでも、「この日付を和暦で出したい」「金額を桁区切りにしたい」といった日常的な表示調整では、Claude Codeに聞く方が圧倒的に速く、コストもかかりません。
Format関数の書式指定文字を1つずつ覚えるより、「このセルの日付を令和表記に直して」「請求書の金額欄に桁区切りを付けて」とClaude Codeに指示する言葉の使い方を覚える方が、投資対効果が高いというのが弊社の考えです。
06 GENAI CASE STUDY 【独自データ】GENAI社内のExcel・VBA業務効率化実例 Max 20xプラン契約会社が、Excel業務に何をどれだけ使っているか
弊社(株式会社GENAI)では、Claude Max 20xプラン(月額約30,000円)を全社契約し、経営・営業・広告・開発・経理・秘書業務までClaude Codeを組み込んで運用しています。ここでは、社内のExcel・VBA関連業務における実運用の肌感を紹介します。
| 項目 | 内容 |
|---|---|
| 契約プラン | Claude Max 20x(月$200 / 約30,000円) |
| 利用開始 | 2025年後半〜 |
| 関連業務での主な用途 | 請求書チェック・経費仕訳・Freee連携、社内向け集計表の書式修正 |
| 主な利用モデル | Sonnet系(日常業務)/Opus系(複雑な判断が必要なとき) |
経理領域では、請求書チェック・経費仕訳・Freee連携を含む業務量が月40時間 → 月5時間程度まで圧縮できている肌感です。Excelの表示形式調整のような細かい作業は、この経理業務の中に含まれる形で日常的にClaude Codeへ依頼しています。開発領域では、WordPress・LP制作やスクリプトの書き捨てに加えて、既存の集計マクロを読み解いて修正する作業も、都度数時間単位の削減につながっているケースが多くあります。
上記は弊社の肌感ベースの数値であり、業務の規模・複雑さ・担当者のスキルによって削減時間は変動します。「完全自動化」を意味するものではなく、あくまで作業の初速が上がるという意味での参考情報です。
6-1. 表示形式の修正をClaude Codeに任せる4ステップ
弊社で実際に、Excelの表示形式(Format関数まわり)をClaude Codeに直させるときの進め方を4ステップに整理すると、以下のようになります。
直したい表示例を
言葉で伝える
Format関数の
コードを生成させる
実際のセルで
動作確認する
問題なければ
マクロに反映
重要なのはStep 3の「実際のセルで動作確認する」を省略しないことです。Claude Codeが生成したコードは精度が高いものの、既存の帳票フォーマットとの相性や、社内特有の運用ルール(和暦か西暦かなど)を最終確認する工程を必ず挟みます。弊社の運用でも、AIの提案をそのまま無条件で反映することはしていません。
07 OVERCOMING BARRIERS 非エンジニアがVBAの壁を越えるための3ステップ Claude Codeを「使える」まで持っていく最短ルート
「Format関数の書式は分かった。でも実際に社内のExcelマクロをClaude Codeに任せるのは、正直ハードルが高い」——そう感じる方も多いはずです。弊社の導入支援でよく見られる3つのステップを紹介します。
7-1. 【ステップ1】既存マクロの中身を「説明させる」ことから始める
最初のステップは、いきなり修正を依頼するのではなく、今あるマクロが何をしているかを日本語で説明させることです。「このマクロは何をしているか要約して」と頼むだけで、担当者不在の古いマクロでも中身の把握が一気に進みます。
いきなり全マクロを読ませるのではなく、影響範囲が小さい1つのプロシージャ(例: 日付表示だけを担当する部分)から試してみるのがおすすめです。範囲を絞ることで、リスクを抑えながら効果を体感できます。
7-2. 【ステップ2】「どう表示したいか」を普段の言葉で伝える
次のステップは指示の出し方です。書式指定文字の名前を知らなくても、普段の言葉で話しかければ十分です。「この日付を和暦で、曜日も付けて表示して」「この金額欄に3桁区切りのカンマを付けて」といった具体的なお願いで、Claude Codeは意図を汲んで正しいコードを書きます。
7-3. 【ステップ3】「間違っていないか」を人間が最終確認する
3つ目のステップは検証です。Format関数の間違いはエラーにならず、見た目だけがおかしいまま動いてしまうケースが多いため、実際の出力結果を人間の目で確認する工程は省略しないことが重要です。特に社外に出す請求書・契約書関連の帳票では、この最終確認を徹底してください。
08 CONCLUSION まとめ ── 書式指定文字より「任せる技術」を身につける 構文の暗記より、正しく任せる判断力が経営者に求められている
この記事では、VBA Format関数の正確な書式(日付・時刻・和暦・曜日・数値・文字列)、「mmが月か分か」というVBA特有の落とし穴、そして経営目線での学習コストとClaude Code委任の比較、弊社GENAIの実運用データまでを整理しました。最後にポイントを振り返ります。
yyyy/mm/dd、和暦はggge年m月d日、曜日はaaaaで表示できるn/nnを使うと、月との取り違えを防げる0でゼロ埋め、#,##0で桁区切り、0%でパーセント表示@(余白埋め)や>/<(大文字小文字変換)が使える最も重要なメッセージをお伝えします。「Format関数の書式を正しく書けるようになること」自体が経営目標ではありません。目標は、社内のExcel・VBA資産をブラックボックスのままにせず、必要なときにすぐ表示形式を直せる状態を保つことです。
そのための手段として、経営者自身が書式指定文字を1つずつ習得する道もあれば、Claude Codeという「書ける・説明できるパートナー」を業務に組み込む道もあります。弊社では後者の実践を支援しています。
社内のExcel・VBA資産の整理も、AI鬼管理が一緒に設計します
書式が崩れた集計表、担当者しか触れないマクロ。
まず「何が書かれているか」を知るところから、Claude Codeで一緒に整理します。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. VBAのFormat関数で、日付を和暦(令和表記)にするにはどう書けばいいですか?
A. Format(対象の日付, "ggge年m月d日")のように、元号のフル名称を表すgggと、和暦年を表すeを組み合わせます。例えば2026年1月1日であれば「令和8年1月1日」と表示されます。元号を漢字1文字にしたい場合はgg、アルファベット1文字にしたい場合はgを使います。
Q. 曜日を日本語(月・火・水…)で表示するにはどうすればいいですか?
A. aaa(1文字・例: 木)またはaaaa(フル・例: 木曜日)を使います。英語圏向けのdddやddddは日本語環境でも英語表記(Thuなど)で返るため、社内向けの日本語帳票ではaaa系を使うのが正しい選び方です。
Q. Format関数で「mm」と書いたのに、分ではなく月が表示されてしまいます。なぜですか?
A. VBAでは、mmは「hまたはhhの直後に置かれた場合」だけ分として解釈され、それ以外の場所ではすべて月として解釈されます。時刻部分(hh)を省略した書式で分を表示したい場合は、月と紛れないn(ゼロ埋めなし)またはnn(ゼロ埋めあり)を使うと、この取り違えを防げます。
Q. 数値をカンマ区切り(3桁ごと)で表示するにはどう書けばいいですか?
A. Format(数値, "#,##0")と書きます。例えば1234567という数値であれば「1,234,567」と表示されます。金額の頭に円マークを付けたい場合は"¥#,##0"のように文字を直接書式文字列に含めることで実現できます。
Q. 伝票番号を必ず5桁のゼロ埋めで表示したい場合はどうすればいいですか?
A. Format(数値, "00000")のように、必要な桁数分の0を並べます。例えば42という数値であれば「00042」と表示されます。桁数を超える数値を入れても上位桁が切り捨てられることはなく、そのままの桁数で表示されます。
Q. Format関数の書式指定文字を全部覚えないと業務では使えませんか?
A. 弊社の考えでは、全て暗記する優先度は高くありません。それより、Claude Codeに「この日付を和暦で表示して」「この列を桁区切りにして」と指示できる状態を作る方が、投資対効果は高いと考えています。基幹システムへの組み込みなど責任の所在が必要な案件では、引き続き専門エンジニアの関与も必要です。
Q. 非エンジニアの経営者が、社内のExcelマクロを自分で読めるようになる必要はありますか?
A. 構文を暗記する必要性は低いというのが弊社の立場です。まずはClaude Codeに「このマクロは何をしているか説明して」と聞くところから始めれば、担当者不在で中身が分からないマクロでも、把握と修正の初速を大きく上げられます。人間が最後に出力結果を確認する工程だけは省略しないことをおすすめします。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理/AIBPO by AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。




