日付を文字列と結合したら「44987」みたいな謎の数字になった。そんな経験はありませんか?
Googleスプレッドシートで日付や数値をそのまま文字列に結合すると、見た目がおかしくなります。表示形式の情報が落ちてしまうからです。
この問題を解決するのがTEXT関数です。「この数値をこの形式で文字列にして」と指定できます。
この記事では、TEXT関数の基本から書式コード一覧、実務で使える変換パターンまでまとめて紹介します。
スプレッドシートのTEXT関数とは?何ができる関数か1分でわかる
TEXT関数(読み方: テキスト関数)は、数値や日付を指定した書式の文字列に変換する関数です。
名前のとおり、値を「テキスト(文字列)」に変えてくれます。
たとえば「1234567」という数値にTEXT関数を使うと「1,234,567」のように桁区切り付きの文字列にできます。日付なら「2026/3/19」を「3月19日(木)」に変換できます。
TEXT関数でできることをまとめると、次のとおりです。
- 数値に桁区切りや通貨記号を付けて文字列にする
- 日付を「〇年〇月〇日」や「〇月〇日(曜日)」形式に変換する
- 時刻を「午前/午後」付きの形式に変換する
- 変換した文字列を他の文字と結合して文章を作る
TEXT関数の戻り値は文字列です。見た目は数値でも中身は文字列になります。このポイントは後ほど詳しく解説しますね。
NOTE
TEXT関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、基本的な使い方は共通です。
TEXT関数の基本の書き方
構文と引数
=TEXT(数値, 表示形式)
第1引数に変換したい値、第2引数に書式コードを指定します。書式コードはダブルクォーテーションで囲みます。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 変換元の数値・日付・セル参照 |
| 表示形式 | 必須 | 書式コード文字列(””で囲む) |
引数は2つだけです。「何を」「どんな形式で」文字列にするかを指定するシンプルな構造ですよ。
シンプルな使用例(数値を3桁区切りに変換)
まずは数値に桁区切りのカンマを付ける例です。
=TEXT(1234567, "#,##0")
結果は「1,234,567」です。書式コード #,##0 が桁区切りを指定しています。
もう少し例を見てみましょう。
=TEXT(0.85, "0%")
結果は「85%」です。小数を百分率の文字列に変換しました。
=TEXT(A1, "yyyy/mm/dd")
A1に日付が入っていれば「2026/03/19」のような文字列になります。
書式コード一覧|日付・時刻・数値・曜日の4カテゴリ
TEXT関数の第2引数に指定する書式コードを一覧で紹介します。よく使うものを4つのカテゴリに分けました。
日付系の書式コード
| 書式コード | 出力例 | 説明 |
|---|---|---|
| yyyy | 2026 | 年(4桁) |
| yy | 26 | 年(下2桁) |
| mm | 03 | 月(2桁・ゼロ埋め) |
| m | 3 | 月(1〜2桁) |
| dd | 19 | 日(2桁・ゼロ埋め) |
| d | 19 | 日(1〜2桁) |
年・月・日を自由に組み合わせて日付の文字列を作れます。区切り文字にスラッシュや「年」「月」を使えば好みの形式にできますよ。
=TEXT(A1, "yyyy年m月d日")
結果は「2026年3月19日」のようになります。
時刻系の書式コード
| 書式コード | 出力例 | 説明 |
|---|---|---|
| HH | 14 | 時(24時間表記・2桁) |
| hh | 02 | 時(12時間表記・2桁) |
| mm(時刻の直後) | 05 | 分(2桁・ゼロ埋め) |
| ss | 09 | 秒(2桁・ゼロ埋め) |
| AM/PM | 午後 | 午前/午後の表示 |
注意点がひとつあります。mm は文脈によって意味が変わります。時刻コード(h や HH)の直後に書くと「分」になります。それ以外の場所では「月」として扱われますよ。
=TEXT(A1, "HH:mm:ss")
結果は「14:05:09」のようになります。
=TEXT(A1, "hh:mm AM/PM")
結果は「02:05 午後」のようになります。日本語環境では AM/PM が「午前/午後」で表示されます。
数値系の書式コード
| 書式コード | 出力例 | 説明 |
|---|---|---|
| #,##0 | 1,234,567 | 桁区切り(整数) |
| #,##0.00 | 1,234,567.89 | 桁区切り+小数2桁 |
| 0.00 | 3.14 | 小数2桁(桁区切りなし) |
| 0% | 85% | パーセント表示 |
| 0.0% | 85.5% | パーセント(小数1桁) |
| ¥#,##0 | ¥1,234,567 | 円通貨 |
| 000-0000 | 123-4567 | ゼロ埋め+ハイフン区切り |
# と 0 の違いを押さえておきましょう。# は値がなければ非表示です。0 は値がなくてもゼロを表示します。
=TEXT(5, "000")
結果は「005」です。先頭にゼロが埋められます。郵便番号や社員番号のゼロ埋めに便利ですよ。
曜日系の書式コード
| 書式コード | 出力例 | 説明 |
|---|---|---|
| dddd | 木曜日 | 曜日(フルネーム) |
| ddd | 木 | 曜日(略称) |
日本語ロケール環境のGoogleスプレッドシートでは、曜日が日本語で表示されます。
=TEXT(A1, "ddd")
A1が2026年3月19日(木曜日)なら、結果は「木」です。
=TEXT(A1, "dddd")
結果は「木曜日」になります。
よく使う実務パターン5選
ここからは、TEXT関数の実務での使いどころを5つ紹介します。
日付を「〇月〇日(曜)」と表示する
報告書やメール文面に使いやすい日付表示です。
=TEXT(A1, "m月d日(ddd)")
A1が「2026/3/19」なら、結果は「3月19日(木)」です。
カッコ内の「ddd」が曜日の略称に変換されます。フルネームにしたいときは「dddd」に変えてください。
=TEXT(A1, "m月d日(dddd)")
結果は「3月19日(木曜日)」になります。
数値に¥と,を付けて文章中に埋め込む
金額を文章の中に入れるパターンです。
="売上は" & TEXT(B1, "¥#,##0") & "です。"
B1が「1500000」なら、結果は「売上は¥1,500,000です。」になります。
TEXT関数で書式を整えてから&演算子で結合するのがポイントです。TEXT関数を使わずに結合すると「売上は1500000です。」のように桁区切りなしの読みづらい文になってしまいます。
日付と文字を&演算子で結合する(変な数字回避)
冒頭でも触れた「日付を結合したら謎の数字になる」問題の解決策です。
="提出期限:" & A1
この数式だと、A1が「2026/3/19」でも「46097」のような数字になります。スプレッドシートが日付を内部のシリアル値で扱っているためです。
TEXT関数で変換してから結合すれば解決します。
="提出期限:" & TEXT(A1, "yyyy年m月d日")
結果は「提出期限:2026年3月19日」です。
日付と文字列の結合には、必ずTEXT関数を挟みましょう。これを知っているだけで「変な数字」トラブルを回避できますよ。
TEXTJOINと組み合わせて複数セルを整形結合
複数の日付や数値を一気に整形しつつ結合するパターンです。TEXTJOIN関数と組み合わせます。
たとえばA1〜A3に3つの日付が入っているとします。
=TEXTJOIN("、", TRUE, TEXT(A1, "m/d"), TEXT(A2, "m/d"), TEXT(A3, "m/d"))
結果は「3/19、3/20、3/21」のようになります。
ARRAYFORMULA関数を使えばもっとスマートに書けます。
=TEXTJOIN("、", TRUE, ARRAYFORMULA(TEXT(A1:A3, "m/d")))
結果は同じです。セル範囲をまとめて変換してから結合しています。複数セルの整形結合では、この書き方を覚えておくと便利ですよ。
パーセントを「xx.x%」形式で文字として扱う
アンケート結果や達成率を文章に埋め込むパターンです。
=TEXT(B1, "0.0%")
B1が「0.856」なら、結果は「85.6%」です。
文章に埋め込むときはこうなります。
="達成率は" & TEXT(B1, "0.0%") & "でした。"
結果は「達成率は85.6%でした。」です。
小数の桁数は書式コードで調整できます。0% なら「86%」、0.00% なら「85.60%」です。用途に合わせて使い分けてみてください。
TEXT関数で変換後に計算できなくなったときの解決策
TEXT関数を使い始めると、ほぼ全員がぶつかる落とし穴があります。「計算できなくなった」問題です。
なぜ計算できなくなるのか(文字列扱いになる理由)
TEXT関数の戻り値は文字列です。見た目が「1,234」でも中身は文字列です。
文字列はSUMやAVERAGEなどの計算関数に渡しても無視されます。数値として認識されないからです。
=TEXT(100, "#,##0") → "100"(文字列)
=TEXT(200, "#,##0") → "200"(文字列)
この2つのセルをSUM関数で合計しても「0」です。文字列なのでスキップされてしまいます。
TEXT関数は「表示用の整形」に使う関数です。計算に使うセルには適用しないのが基本ルールですよ。
VALUE関数で数値に戻す往復変換パターン
どうしてもTEXT関数で変換した値を数値に戻したいときは、VALUE関数を使います。
=VALUE(TEXT(A1, "#,##0"))
TEXT関数で文字列にしたものを、VALUE関数で数値に戻す「往復変換」です。
ただし注意点があります。TEXT関数で「¥」や「%」を付けた場合の挙動です。
=VALUE("¥1,234") → 1234(通貨記号は自動除去)
=VALUE("85%") → 0.85(パーセントは小数に変換)
また先頭ゼロは消えます。TEXT関数で「005」にしてもVALUEで戻すと「5」です。
実務では「計算用セル」と「表示用セル」を分けるのがおすすめです。元データは数値のまま残しておき、表示が必要な場所だけTEXT関数を使いましょう。
GoogleスプレッドシートとExcelの書式コードの違い
TEXT関数の基本的な使い方はGoogleスプレッドシートとExcelで共通です。ただし、一部の書式コードに違いがあります。
| 書式コード | Googleスプレッドシート | Excel |
|---|---|---|
| ? (スペース埋め) | 非対応 | 対応 |
| 分数(# ?/?) | 非対応 | 対応 |
| * (繰り返し) | 非対応 | 対応 |
| 日付+数値の混在 | 非対応 | 一部対応 |
| dddd / ddd | 日本語で「木曜日/木」 | ロケール依存 |
GoogleスプレッドシートではExcelの一部書式パターンが使えません。? によるスペース埋めや分数フォーマットが代表的です。
ExcelからGoogleスプレッドシートにファイルを移行するとき、TEXT関数の書式コードが動かないケースがあります。上の表に該当する書式を使っていないか確認してみてください。
逆に、よく使う #,##0 や yyyy/mm/dd などの基本コードは両方で同じように動きます。基本的な用途で困ることはありませんよ。
TIP
Googleスプレッドシート独自のTO_TEXT関数も覚えておくと便利です。書式コードの指定はできませんが、セルの値をそのまま文字列化します。単純な文字列変換ならTO_TEXT、書式を指定したいならTEXT関数と使い分けてみてください。
TEXT関数に関するよくある疑問
Q. TEXT関数で変換した値をソート(並べ替え)できる?
できますが注意が必要です。文字列としてソートされるため、数値の大小順にはなりません。「10」が「2」より前に来ます。ソートは元の数値列で行いましょう。
Q. TEXT関数で日付の「令和」表示はできる?
Googleスプレッドシートでは和暦の書式コードに対応していません。和暦表示が必要な場合は、YEAR関数で年を取り出して ="令和"&(YEAR(A1)-2018)&"年" のように手動で組み立てる方法があります。
Q. TEXT関数の結果が「#VALUE!」になるのはなぜ?
第1引数が文字列のときに起きます。TEXT関数は数値か日付を受け取る関数です。文字列は変換できません。セル参照先のデータ型を確認してみてください。
Q. 書式コードの大文字・小文字は区別される?
時刻の「HH」と「hh」は区別されます。「HH」は24時間表記、「hh」は12時間表記です。日付の「MM」と「mm」は区別されません。どちらも同じ動作です。
まとめ
TEXT関数は、数値や日付を指定した書式の文字列に変換する関数です。
ポイントを整理します。
- 構文は
=TEXT(数値, 表示形式)の2引数。第2引数に書式コードを指定する - 日付と文字を&で結合するとき、TEXT関数を挟めば「謎の数字」を回避できる
- 書式コードは日付系(yyyy, mm, dd)・時刻系(HH, mm, ss)・数値系(#,##0)・曜日系(ddd, dddd)の4カテゴリ
- 戻り値は文字列。計算に使うセルにはTEXT関数を適用しない
- 計算用と表示用のセルを分けるのが実務のコツ
- CONCATENATE関数やTEXTJOIN関数と組み合わせれば、整形済みテキストの結合も自在
まずは =TEXT(A1, "yyyy年m月d日") で日付の変換から試してみてください。
