TEXT関数の使い方|数値や日付の表示形式を変換
TEXT関数は、数値や日付を指定した書式の文字列に変換する関数です。セルの書式設定とは異なり、数式の中で表示形式を制御できるため、文字列結合や条件付きの書式変換に活用できます。日付を「2026年6月16日」のように表示したり、金額に桁区切りを付けたりする場面で便利です。
TEXT関数の基本構文
=TEXT(値, 表示形式)
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 値 | 変換する数値、日付、またはセル参照 | 必須 |
| 表示形式 | 書式コードを文字列で指定 | 必須 |
TEXT関数の結果は文字列です。計算に使用する場合は、VALUE関数で数値に変換する必要があります。
主な書式コード一覧
数値の書式コード
| 書式コード | 説明 | 入力値 | 結果 |
|---|---|---|---|
| ”0” | 整数(1桁) | 5 | ”5" |
| "0.00” | 小数点以下2桁 | 3.1 | ”3.10" |
| "#,##0” | 桁区切り | 1234567 | ”1,234,567" |
| "#,##0円” | 桁区切り+単位 | 1234567 | ”1,234,567円" |
| "0%“ | パーセント | 0.85 | ”85%" |
| "0.0%“ | パーセント(小数1桁) | 0.856 | ”85.6%" |
| "00000” | ゼロ埋め5桁 | 42 | ”00042” |
日付の書式コード
| 書式コード | 説明 | 結果例 |
|---|---|---|
| ”YYYY/MM/DD” | 年/月/日 | ”2026/06/16" |
| "YYYY年M月D日” | 和風表記 | ”2026年6月16日" |
| "YYYY-MM-DD” | ISO形式 | ”2026-06-16" |
| "MM/DD” | 月/日 | ”06/16" |
| "AAAA” | 曜日(日本語) | “火曜日" |
| "AAA” | 曜日(短縮) | “火" |
| "DDDD” | 曜日(英語) | “Tuesday" |
| "DDD” | 曜日(英語短縮) | “Tue” |
時刻の書式コード
| 書式コード | 説明 | 結果例 |
|---|---|---|
| ”HH:MM” | 時:分(24時間) | “14:30" |
| "HH:MM:SS” | 時:分:秒 | ”14:30:05" |
| "H時M分” | 和風表記 | ”14時30分" |
| "AM/PM H:MM” | 12時間表記 | ”PM 2:30” |
実践例1:日付を和風表記に変換
日付データを「2026年6月16日(火)」のような形式に変換します。
=TEXT(A2, "YYYY年M月D日(AAA)")
セルの書式設定で同じことができますが、TEXT関数を使うと文字列として他のセルと結合できます。
="更新日: " & TEXT(A2, "YYYY年M月D日")
実践例2:金額に桁区切りを付けて結合
売上金額を桁区切り付きの文字列に変換して、レポート用の文字列を作成します。
="売上合計: " & TEXT(SUM(B2:B10), "#,##0") & "円"
TEXT関数を使わないと、「売上合計: 1234567円」のように桁区切りなしで表示されます。TEXT関数を使うことで「売上合計: 1,234,567円」と読みやすくなります。
実践例3:ゼロ埋めで桁数を揃える
番号や管理コードの桁数をゼロ埋めで統一する例です。
=TEXT(A2, "00000")
A2が42の場合、結果は「00042」です。5桁に満たない場合に先頭を0で埋めます。
社員番号や商品コードの生成で便利です。
="EMP-" & TEXT(A2, "0000")
A2が7の場合、「EMP-0007」になります。
実践例4:パーセント表示
割合を見やすいパーセント表記に変換します。
=TEXT(B2/A2, "0.0%")
A2が200、B2が150の場合、結果は「75.0%」です。小数点以下の桁数を書式コードで制御できます。
=TEXT(B2/A2, "0%") ' 結果: "75%"
=TEXT(B2/A2, "0.00%") ' 結果: "75.00%"
実践例5:条件付きの書式変換
正の数と負の数で異なる書式を適用する例です。書式コードではセミコロンで正・負・ゼロの書式を区切れます。
=TEXT(A2, "#,##0;-#,##0;0")
ただし、TEXT関数内での条件付き書式は複雑になるため、IF関数と組み合わせるほうがわかりやすい場合もあります。
=IF(A2>=0, TEXT(A2, "#,##0") & "円の黒字", TEXT(ABS(A2), "#,##0") & "円の赤字")
よくあるエラーと対処法
結果が意図しない形式になる
書式コードの大文字・小文字に注意してください。日付の書式コードでは、MMは月、mmは分です。
# 月を表示(正しい)
=TEXT(A2, "YYYY/MM/DD")
# 分を表示してしまう(意図しない結果)
=TEXT(A2, "YYYY/mm/DD")
#VALUE!エラー
第2引数(表示形式)が空文字列の場合や、不正な書式コードの場合に発生することがあります。書式コードが正しいか確認してください。
計算に使えない
TEXT関数の結果は文字列です。計算に使うには、VALUE関数で数値に変換する必要があります。
# TEXT関数の結果は文字列なので計算できない
=TEXT(A2, "#,##0") + 100 ' エラー
# VALUE関数で数値に戻す
=VALUE(TEXT(A2, "#,##0")) + 100
ただし、表示だけが目的なら、セルの書式設定を使うほうが適切です。TEXT関数は文字列結合など、数式内で書式が必要な場面で使いましょう。
日本語の曜日表示
Excel日本語版では「AAAA」で「月曜日」のような曜日表示ができますが、英語版では使えません。多言語環境では注意が必要です。
TEXT関数とセルの書式設定の違い
| 項目 | TEXT関数 | セルの書式設定 |
|---|---|---|
| 結果の型 | 文字列 | 元のデータ型を保持 |
| 計算への使用 | 不可(VALUE関数が必要) | そのまま可能 |
| 数式内での使用 | 可能 | 不可 |
| 設定場所 | 数式内 | セルのプロパティ |
| 並べ替え | 文字列として並ぶ | 数値として並ぶ |
表示だけを変えたい場合はセルの書式設定を使い、文字列として結合や出力が必要な場合にTEXT関数を使うのが基本です。
Google スプレッドシートでの互換性
TEXT関数はGoogle スプレッドシートでも利用可能です。基本的な書式コードは共通していますが、日本語の曜日表示(AAAA、AAA)はGoogle スプレッドシートでは動作が異なる場合があります。Google スプレッドシートではDDDDやDDDで英語の曜日を表示し、ロケール設定に応じた曜日表示にはTEXT関数のロケール引数を使う必要があります。
まとめ
TEXT関数は数値や日付を任意の書式の文字列に変換する関数です。
- 書式コードで表示形式を細かく制御できる
- 文字列結合の際に書式を保持するために使う
- 結果は文字列になるため計算には直接使えない
- 表示だけが目的ならセルの書式設定を優先する
- 日付の書式コードは大文字・小文字に注意する
レポートの自動生成やデータの書式統一など、TEXT関数の活用場面は幅広いです。書式コードのパターンを覚えて、効率的なデータ処理に活かしてください。