はじめに:スプレッドシートで日付が謎の数字に化ける現象、経験ありませんか?
Googleスプレッドシートでセル内のデータを結合する際、CONCATENATE関数や&(アンパサンド)演算子は非常に便利ですよね。しかし、日付データを含むセルを結合しようとしたとき、「2023/07/25」といった日付が突如「45123」のような謎の数字に変わってしまい、困惑した経験はありませんか?
これはGoogleスプレッドシート(Excelなど他の表計算ソフトでも同様)の内部的な日付の扱いに起因する現象です。この記事では、この「日付の数字化け」の具体的な原因を解説し、そして「現場で今すぐ使える」確実な解決策、TEXT関数の活用方法を詳しくご紹介します。
なぜ日付が「45123」のような数字になるのか?シリアル値の正体
Googleスプレッドシートにおける日付の内部表現
GoogleスプレッドシートやExcelのような表計算ソフトでは、日付や時刻は人間が読みやすい「2023/07/25」のような形式で表示されていますが、その内部では「シリアル値」と呼ばれる数値として管理されています。
シリアル値は、特定の基準日(通常は1900年1月1日)を「1」として、そこからの経過日数を整数で表したものです。例えば、2023年7月25日は「45147」というシリアル値になります(環境によっては1900年2月29日のバグを考慮してExcelとGoogleスプレッドシートで1日ずれることがありますが、基本的には同様の概念です)。
文字列結合時にシリアル値がそのまま表示される理由
CONCATENATE関数や&演算子は、セル内の値を「文字列」として結合する機能を持っています。日付セルをこれらの方法で結合しようとすると、スプレッドシートは日付を「表示形式」ではなく、内部で持っている「シリアル値」という数値として認識し、それをそのまま文字列に変換して結合してしまうのです。その結果、日付の書式設定が失われ、謎の数字が表示されることになります。
解決策はこれ!TEXT関数で日付を意図した文字列に変換
この問題を解決するには、日付を文字列として結合する前に、TEXT関数を使って明示的に「指定した書式の日付文字列」に変換してあげる必要があります。
TEXT関数の基本的な使い方
TEXT関数は、数値や日付を特定の書式に変換して文字列として返す関数です。
=TEXT(値, 書式設定文字列)
- 値 (必須): 書式設定したい数値や日付、またはそれらが入力されているセルへの参照。
- 書式設定文字列 (必須): 変換したい書式を指定する文字列。ダブルクォーテーションで囲んで指定します。
よく使う日付の書式設定文字列の例
TEXT関数で日付を扱う際によく使われる書式設定文字列をいくつかご紹介します。
"yyyy/mm/dd": 「2023/07/25」のように年/月/日の形式"yyyy年m月d日": 「2023年7月25日」のように漢字を含む形式"yy/mm/dd": 「23/07/25」のように年を2桁で表示"yyyy/mm/dd(aaa)": 「2023/07/25(火)」のように曜日を含める形式"yyyy年M月D日(aaa)": 「2023年7月25日(火)」のように漢字と曜日を含む形式"h:mm:ss": 「14:30:00」のように時刻の形式
※月の指定は m (1桁/2桁)、mm (必ず2桁)、日の指定は d (1桁/2桁)、dd (必ず2桁) と使い分けられます。曜日は aaa (短縮形) や aaaa (フル表記) を使用します。
具体的な修正方法:サンプルで学ぶTEXT関数の実践
それでは、具体的なスプレッドシートの例でTEXT関数を使った修正方法を見ていきましょう。
問題の発生例
A列に日付、B列にテキストデータがあるとします。
| A | B |
|---|---|
| 2023/7/25 | 会議資料 |
ここで、「作成日: [日付] – [資料名]」という文字列を作りたい場合、以下のように記述すると日付が化けてしまいます。
=CONCATENATE("作成日: ", A2, " - ", B2)
または
="作成日: " & A2 & " - " & B2
結果: 作成日: 45147 - 会議資料
TEXT関数を使った修正例
A2セルの日付を意図した形式に変換するため、TEXT関数を間に挟みます。
=CONCATENATE("作成日: ", TEXT(A2, "yyyy/mm/dd"), " - ", B2)
または
="作成日: " & TEXT(A2, "yyyy年m月d日") & " - " & B2
結果: 作成日: 2023/07/25 - 会議資料
結果: 作成日: 2023年7月25日 - 会議資料
このように、TEXT関数を使うことで、日付が意図した書式で文字列として結合されるようになります。
さらに実用的な結合例
複数の日付や時刻を含む情報を結合する際にも、TEXT関数は非常に役立ちます。
| A (商品名) | B (注文日) | C (発送予定日) |
|---|---|---|
| スマートウォッチ | 2023/7/20 | 2023/7/27 |
「商品名: [商品名] (注文日: [注文日], 発送予定: [発送予定日(曜日)])」という文字列を作成する場合。
="商品名: " & A2 & " (注文日: " & TEXT(B2, "yyyy/mm/dd") & ", 発送予定: " & TEXT(C2, "yyyy年M月D日(aaa)") & ")"
結果: 商品名: スマートウォッチ (注文日: 2023/07/20, 発送予定: 2023年7月27日(金))
このように、個々の日付セルに対して異なる書式を指定できるため、より柔軟な出力が可能になります。
まとめ:TEXT関数でスプレッドシートの文字列結合をマスターしよう
GoogleスプレッドシートでCONCATENATE関数や&演算子を使ってセルを結合した際に、日付がシリアル値に化ける問題は、日付の内部表現である「シリアル値」が原因でした。
この問題を解決するには、TEXT関数を使って日付を明示的に目的の書式を持つ文字列に変換してから結合することが重要です。
TEXT(値, 書式設定文字列)
このシンプルな関数をマスターすることで、スプレッドシートでのデータ加工やレポート作成が格段にスムーズになり、より正確で読みやすい資料を作成できるようになります。ぜひ日々の業務に活用してみてください。


コメント