TEXT関数 和暦変換&書式コード逆引き完全ガイド
― 西暦⇔令和/平成変換・IF条件分岐・ユーザー定義まで全網羅 ―
📖 この記事の内容
1 書式設定(見た目)と TEXT関数(データ化)は同じ言葉で動く
Excelにおける「表示形式のコード(#,##0 や yyyy/mm/dd など)」は、以下の2つの機能でまったく同じ記法として使い回せます。
① セルの書式設定(Ctrl+1)
セルを右クリック → [セルの書式設定] → [ユーザー定義] にコードを入力。
データの中身(数値や日付)はそのままで、画面上の「見た目だけ」をお化粧して変える方法。
② TEXT関数でデータ化
=TEXT(A1, "yyyy/mm/dd") のように関数内にコードを指定。
見た目ではなく、中身を完全に「指定した形式の文字列データ」に変換してしまう方法。文字結合(&)や書き出し時に必須。
この法則さえ覚えておけば、以下のほぼ全ての書式を「書式設定」と「TEXT関数」の両方で自由自在に操ることができます。
2 「セルの書式設定」と「TEXT関数」の決定的な違い
同じ書式コードを使う2つの機能ですが、生成されるデータの性質がまったく異なります。ここを理解していないと「見た目は同じなのに計算できない!」というトラブルが頻発します。
具体例で比較する
セル A1 に日付 2026/4/1(シリアル値 46113)が入っている場合を考えます。
① セルの書式設定で和暦にした場合
A1 のユーザー定義に ggge"年"m"月"d"日" を設定。
画面表示:令和8年4月1日
セルの中身:46113(シリアル値のまま)
データ型:数値(日付)
② TEXT関数で和暦にした場合
=TEXT(A1, "ggge""年""m""月""d""日""")
画面表示:令和8年4月1日
セルの中身:"令和8年4月1日"(文字列)
データ型:文字列
画面上はまったく同じ「令和8年4月1日」に見えますが、中身は全くの別物です。
できること・できないことの比較表
| やりたいこと | セルの書式設定 (見た目だけ変更) |
TEXT関数 (文字列に変換) |
|---|---|---|
| 日付同士の引き算(日数計算) | ✅ できる 中身はシリアル値のまま |
❌ できない 文字列なので #VALUE! エラー |
| SUM / AVERAGE などの計算関数 | ✅ できる | ❌ できない 数値ではないので無視される |
| IF文で日付の大小比較 | ✅ できる | ❌ できない 文字列と数値の比較になる |
| VLOOKUP / INDEX-MATCH の検索キー | ✅ 数値として検索 | ⚠️ 注意 文字列として検索されるため 検索先と型を揃える必要あり |
| & で他の文字列と結合 | ⚠️ 注意 シリアル値がそのまま結合される (例:"請求日:46113") |
✅ そのまま結合できる (例:"請求日:令和8年4月1日") |
| CSVやテキスト書き出しで形式を保持 | ⚠️ 注意 書き出し時に書式が消えて シリアル値や別形式になりがち |
✅ 文字列としてそのまま出力 |
| IF文で元号を判定 | ― そもそもTEXT関数を使う | ✅ 得意中の得意 |
日付や数値の計算・比較・集計はすべて元のデータ(シリアル値や数値)のまま行い、人に見せる最終出力の段階でTEXT関数を使って文字列に変換する ― これが鉄則です。
逆に言えば「&で文章に埋め込む」「IF条件で元号の文字を判定する」「CSVに決まった形式で書き出す」といった"文字列であることが武器になる"場面でこそTEXT関数の本領が発揮されます。
数値でも同じことが起きる
書式設定で「#,##0"円"」
A1 に 15000 と入力し、書式を設定。
画面表示:15,000円
セルの中身:15000(数値のまま)
SUM関数:✅ 15000として合計される
TEXT関数で「#,##0"円"」
=TEXT(A1, "#,##0""円""")
画面表示:15,000円
セルの中身:"15,000円"(文字列)
SUM関数:❌ 無視される(0扱い)
セルを選択して数式バーを見れば、中身が数値なのか文字列なのか一目瞭然です。また、文字列はデフォルトで左揃え、数値・日付はデフォルトで右揃えになるので、配置で見分けることもできます。
3 和暦変換の全パターン ― g / gg / ggg / e / ee の使い分け
TEXT関数の第2引数に和暦専用の書式コードを指定するだけで、西暦の日付を自動的に元号付きの和暦に変換できます。
元号の書式コード一覧
| 書式コード | 出力内容 | 具体例(2026/4/1 の場合) |
|---|---|---|
| g | 元号の頭文字(アルファベット1文字) | R |
| gg | 元号の短縮名(漢字1文字) | 令 |
| ggg | 元号のフルネーム(漢字2文字) | 令和 |
| e | 和暦の年(ゼロ埋めなし) | 8 |
| ee | 和暦の年(ゼロ埋め2桁) | 08 |
和暦の元号一覧(Excelが対応する範囲)
| 元号 | 期間 | g / gg / ggg の出力 |
|---|---|---|
| 明治 | 1868/1/25 ~ 1912/7/29 | M / 明 / 明治 |
| 大正 | 1912/7/30 ~ 1926/12/24 | T / 大 / 大正 |
| 昭和 | 1926/12/25 ~ 1989/1/7 | S / 昭 / 昭和 |
| 平成 | 1989/1/8 ~ 2019/4/30 | H / 平 / 平成 |
| 令和 | 2019/5/1 ~ | R / 令 / 令和 |
実践:和暦変換の数式バリエーション
セル A1 に 2026/4/1 が入っている場合の各出力例です。
パターン① フル和暦(「令和8年4月1日」)
→ 令和8年4月1日
パターン② ゼロ埋めフル和暦(「令和08年04月01日」)
→ 令和08年04月01日
パターン③ 短縮ドット表記(「R8.4.1」)
→ R8.4.1
パターン④ 漢字1文字+年度表記(「令8年度」)
→ 令8年度
パターン⑤ 元号フル+曜日付き(「令和8年4月1日(水)」)
→ 令和8年4月1日(水)
パターン⑥ 文字結合で和暦を文章に埋め込む
→ 発行日:令和8年4月1日付
Excelの標準的なTEXT関数では、令和1年は「令和1年」と表示されます。「令和元年」としたい場合は、後述のIF関数との組み合わせで対応できます。
4 IF関数×TEXT関数で和暦の条件分岐
TEXT関数で日付を「文字列」に変換すれば、IF関数の条件にそのまま使えます。DATE関数で境界日を計算するよりはるかに直感的で、元号ベースの条件分岐が驚くほど簡単になります。
実務定番:生年月日から元号を一発判定する
社員マスタや顧客リストの「生年月日」列から、その人が昭和生まれなのか・平成生まれなのか・令和生まれなのかを判定したい ― これは実務で非常によくある処理です。
TEXT関数の "g" は日付のシリアル値を内部的に元号の境界日と照合して、頭文字1文字を返してくれます。つまり自分でDATE関数の境界日を調べて書く必要がありません。
これだけで A2 の日付が昭和なら "S"、平成なら "H"、令和なら "R" を返す。
この「S」「H」「R」を IF の条件に使えば、元号で処理を分岐できます。
従来のやり方(DATE境界を自分で書く)
=IF(AND(A2>=DATE(1926,12,25), A2<=DATE(1989,1,7)), "昭和", IF(AND(A2>=DATE(1989,1,8), A2<=DATE(2019,4,30)), "平成", ...))
・境界日を正確に覚えている必要がある
・数式が長く、ミスしやすい
・新しい元号が来たら全数式を修正
TEXT(,"g") を使うやり方
=IF(TEXT(A2,"g")="S", "昭和", ...)
・境界日の知識が不要(Excelが内部管理)
・数式が短くて読みやすい
・新元号にもExcel更新で自動対応
短縮和暦の生成にもそのまま使える
シナリオ:帳票の生年月日欄に「S50.6.15」「H7.3.20」のような短縮和暦を自動出力したい
IFすら不要。TEXT関数1つで「元号頭文字+和暦年+月日」が完成する。
IFS / SWITCH でさらにスッキリ書く
シナリオ:生年月日(A1)から「昭和/平成/令和」を自動判定して列に出力したい
判定は「"S"、"H"、"R" のどれか」という完全一致なので、SWITCH が最もスッキリ書けます。IFS は「以上・以下」などの範囲条件も使える汎用型。ネストIF はどのバージョンでも動く安心型です。
応用① 「令和1年」を「令和元年」に自動変換する
シナリオ:和暦表示で1年目を「元年」と表示したい(公文書・社内文書で頻出)
TEXT(A1,"e") で和暦の年数だけを取り出し、それが "1" なら「元」に置き換えます。TEXT(A1,"ggg")で元号フルネームを取得しているため、平成元年・昭和元年・大正元年すべてに自動対応します。
応用② 和暦の「年度」を判定する(4月始まり対応)
シナリオ:日付(A1)が「令和何年度」に属するかを自動表示したい(4月始まり)
ポイントは IF(MONTH(A1)<4, 1, 0) の部分です。1~3月なら年を1引いて前年度に属させています。その「年度の4月1日」を作り、それをTEXTで和暦変換します。
応用③ 元号が切り替わる年の特殊処理
シナリオ:2019年は4月まで「平成31年」、5月から「令和元年」と正確に出し分けたい
Excelは内部的に元号の境界日を管理しているため、TEXT関数の ggg や g は日付に応じて自動的に正しい元号を返します。「令和元年」表記にしたい場合は応用①を併用してください。
応用④ 和暦文字列 → 西暦日付へ逆変換
シナリオ:「令和8年4月1日」のような和暦テキストを日付シリアル値に戻したい
→ 46113(= 2026/4/1 のシリアル値)
A1に「令和8年4月1日」と入っていれば 2026/4/1 のシリアル値を返す。DATEVALUE関数は日本語環境のExcelであれば「令和」「平成」「昭和」などの元号テキストを正しく解釈してシリアル値に変換してくれます。
5 数値・金額を一瞬で整える書式コード
| やりたいこと | 書式記号コード | TEXT関数での書き方(実践例) |
|---|---|---|
| 桁区切りのカンマを入れる | #,##0 | =TEXT(A1, "#,##0")→ 1500000 が "1,500,000" になる |
| 後ろに特定の文字(円、個など)を付ける | #,##0"円" | =TEXT(A1, "#,##0""円""") または=TEXT(A1, "#,##0") & "円"→ "1,200円"になる(&で繋ぐのが簡単です) |
| 常に指定桁数にする(ゼロ埋め) ※社員番号や口座番号の結合で必須 |
0000000 | ="社員ID:" & TEXT(A1, "0000000")→ "社員ID:0015024" になる |
| 小数点第1位まで絶対表示する | 0.0 | =TEXT(A1, "0.0")→ 15 が "15.0" になる |
| 千円単位で表示する(下3桁を省略) | #,##0, | =TEXT(A1, "#,##0,") & "千円"→ 1500000 が "1,500千円" になる |
| 百万円単位で表示する(下6桁を省略) | #,##0,, | =TEXT(A1, "#,##0,,") & "百万円"→ 15000000 が "15百万円" になる |
| パーセント表示する | 0.0% | =TEXT(A1, "0.0%")→ 0.853 が "85.3%" になる |
| 正・負・ゼロで表示を分ける | #,##0;▲#,##0;"─" | =TEXT(A1, "#,##0;""▲""#,##0;""─""")→ 正:"1,500" 負:"▲1,500" ゼロ:"─" |
6 日付・時刻・曜日を自在に操る書式コード
| やりたいこと | 書式記号コード | TEXT関数での書き方(実践例) |
|---|---|---|
| 西暦でゼロ埋めスラッシュ(一番標準) | yyyy/mm/dd | =TEXT(A1, "yyyy/mm/dd")→ "2026/03/05" |
| 年を省略し、ゼロ埋めもしない | m/d | =TEXT(A1, "m/d")→ "3/5" |
| 和暦(令和〇年〇月〇日)で表示する | ggge"年"m"月"d"日" | =TEXT(A1, "ggge""年""m""月""d""日""")→ "令和8年3月18日" |
| 和暦の頭文字アルファベット(R, H, S等) | g | =TEXT(A1, "g") & TEXT(A1, "e") & "年度"→ "R8年度" |
| 曜日を1文字で出す(月, 火, 水…) | aaa | =TEXT(A1, "aaa")→ "水" |
| 曜日をフルで出す(水曜日…) | aaaa | =TEXT(A1, "aaaa")→ "水曜日" |
| 英語の曜日(略称 / フル) | ddd / dddd | =TEXT(A1, "ddd") → "Wed"=TEXT(A1, "dddd") → "Wednesday" |
| 英語の月名(略称 / フル) | mmm / mmmm | =TEXT(A1, "mmm") → "Mar"=TEXT(A1, "mmmm") → "March" |
| 日付と曜日をカッコ付きでまとめる | yyyy/mm/dd (aaa) | ="作業日は " & TEXT(A1, "yyyy/mm/dd (aaa)") & " です"→ "作業日は 2026/03/18 (水) です" |
| 時間・分・秒を表示する | h:mm:ss | =TEXT(A1, "h:mm:ss")→ "9:05:00" |
| 24時間を超える時間を集計する | [h]:mm | ="総労働時間は " & TEXT(A1, "[h]:mm")→ "総労働時間は 25:30"([h]がないと1:30にリセットされる) |
実務で頻出する「日付の文字化」
→ "本日の作業日は 2026/03/23 (月) です"
日本語環境でも
[$-409] を書式コードの先頭に付けると英語表示になります。=TEXT(A1, "[$-409]mmm dd, yyyy") → "Apr 01, 2026"海外拠点とのやり取りや英語帳票で便利です。
[$-409] は英語(米国)、[$-411] は日本語のロケールIDです。
7 文字列の操作と「完全に消す」裏ワザコード
| やりたいこと | 書式記号コード | TEXT関数での書き方(実践例) |
|---|---|---|
| 文字の後ろに自動で「様」や「御中」を付ける ※主に「書式設定」専用テクニック |
@" 様" | TEXT関数ではなく= A1 & " 様" で文字結合→ "田中 様" |
| セルの中身を完全に非表示にする ※VLOOKUPのキー列、パスワード入力欄などに |
;;; | ※「セルの書式設定」に ;;; を入力→ (画面上から完全に消えて見えなくなる) |
エクセルの表示形式は基本的に
プラスの書式 ; マイナスの書式 ; ゼロの書式 ; 文字列の書式 という4つのブロックをセミコロンで区切って定義します。つまり、
;;; とだけ書くと「全てにおいて表示する書式が存在しない」ことになり、データは存在するのに画面からは完全に消滅する状態になります。
8 注意点 ― 令和対応・環境依存・よくある落とし穴
⚠️ 新元号「令和」への対応条件
確認方法:
=TEXT(DATE(2019,5,1), "ggg") と入力して「令和」と出れば対応済みです。「平成」と出る場合はWindows UpdateまたはOffice更新が必要です。
⚠️ 「#」と「0」の違い ― ゼロの扱い
# は「値がゼロの桁は表示しない」、0 は「値がゼロでも必ず表示する」という違いがあります。例:値が
5 の場合 → ### → "5" / 000 → "005"社員番号のゼロ埋めなどには必ず
0 を使ってください。
⚠️ ダブルクォーテーションのエスケープ
"年" のようにダブルクォーテーション1組ですが、TEXT関数内では ""年"" のようにダブルクォーテーションを2重にする必要があります。これはExcelの数式内で文字列リテラル中のダブルクォーテーションをエスケープするためです。セルの書式設定:
ggge"年"m"月"d"日"TEXT関数:
=TEXT(A1, "ggge""年""m""月""d""日""")
⚠️ m(月)と m(分)の衝突
m は文脈で「月」か「分」か変わります。h(時間)の直後にある m は「分」として解釈されます。日時を1つの書式で扱う場合は、日付パートと時刻パートを分けてTEXTで変換し、& で結合するのが安全です。=TEXT(A1,"yyyy/mm/dd") & " " & TEXT(A1,"hh:mm:ss")
⚠️ 1900年日付システムの制限
⚠️ TEXT関数では文字の色は変わらない
[赤] などで文字色を変更できますが、TEXT関数で [赤] を指定しても文字の色は変わりません。TEXT関数は文字列を返すだけなので、色の制御には条件付き書式を使ってください。
9 実務パターン集
パターン① 請求書のヘッダーに和暦で発行日を埋め込む
→ "請求日:令和8年4月1日"
パターン② ファイル名に日付を埋め込む(区切りなし)
→ "売上報告_20260408.xlsx"
パターン③ 勤務時間の合計を「○時間○分」形式に
→ "173時間30分"
パターン④ 伝票番号のゼロ埋め
A1 = 42 の場合 → "INV-000042"
パターン⑤ 金額を「千円単位」で表示
A1 = 1234567 の場合 → "1,235千円"(千円未満は四捨五入)
パターン⑥ IF と組み合わせて期限メッセージ
パターン⑦ TEXTJOIN + TEXT で複数日付を一括結合
→ "04/08, 04/09, 04/10, 04/11, 04/12"
パターン⑧ LET で長い結合数式を読みやすく
→ "令和8年4月1日 売上:¥1,234,567"
パターン⑨ 生年月日から元年対応の和暦を生成(帳票用)
→ "昭和50年6月15日"、"平成元年1月8日"、"令和2年8月1日"
元年対応込みの万能パターン。社員名簿・履歴書・公的書類の生年月日欄に。
パターン⑩ DATEVALUE で和暦テキストを日付に戻す
A1 = "令和8年4月1日" の場合 → 2026/4/1(シリアル値 46113)
10 まとめ
| 場面 | 最適な手法 |
|---|---|
| セルの見た目だけ変えたい(計算に影響させない) | セルの書式設定(Ctrl+1) |
| & で文字列結合して文章に埋め込む | TEXT関数 + & |
| 生年月日から元号を判定・分岐する | TEXT(A1,"g") + IF / IFS / SWITCH |
| 「令和元年」表記にしたい | TEXT + IF(e="1" なら "元") |
| CSV書き出しで日付形式を固定したい | TEXT関数(文字列としてそのまま出力) |
| 和暦テキストを日付に戻したい | DATEVALUE関数 |
| 英語の日付表示を強制したい | TEXT + [$-409] |
① 書式コードは「セルの書式設定」と「TEXT関数」で同じ記法。ただし、書式設定は中身を保ったまま見た目を変え、TEXT関数は中身ごと文字列に変換する。
② TEXT関数の出力は文字列。計算・日付比較・SUM集計には使えないが、&で文章に埋め込む・IF条件で元号を判定する・CSV書き出しで形式を保つ場面では無敵。計算は元データのまま行い、最後の出力でTEXTを使うのが鉄則。
③ 和暦の
g / gg / ggg と e / ee の組み合わせを覚えれば、元号判定もIF関数で自由自在。生年月日の「昭和か平成か令和か」は TEXT(A1,"g") 一発で判定できる。