見出し画像

Google スプレッドシートで8桁の日付の数字から、日付データに簡単に変換する方法

この記事はGoogle Workspace 標準機能 Advent Calendar 2024(令和6年)の14日目の記事です。

こんにちは!ゆるふわクラウドおじさん こと、Teeda と申します。『Google アプリの教科書シリーズ』という本を毎年Amazon で販売していたり、YouTube チャンネルUdemy で学習用動画を公開しています。

前の記事に続き、日付関連のことを書こうと思います。

西暦の日付を和暦に変換する、ということと同じくらい、
日付データじゃない文字を、日付に変換する、
ということもよくあります。

例えばこの記事の公開日は
令和6年12月13日、2024年12月13日、2024年12月13日(金)、などの様々な表示形式がありますが、
「20241214」
というように入力されてたらどうしましょう。

いくつかやり方を解説します。


日付データが8桁の数字で入力されている

日付データを8桁の数字で入力している表をたまに見ます。
こんな感じです。

日付が8桁の数字

このような数字のデータだと、指定した日数を足し算、引き算した際に、
31日の次は、翌月の1日、というような計算ができなくて不便がたくさんです。

日付のデータ型にするいくつかのやり方を紹介します。

表示形式を「日付」にするだけではだめ

8桁の数値の表示形式を「日付」にしても、
このようになってしまいます。

日付のデータは、1899年12月31日からの経過日数の整数値(日付シリアル)を使用するため、8桁の数値を日付形式として表示すると、2024年から見ると、とんでもない未来の日付が表示されます。
※Google スプレッドシートでは、日付の数値にマイナスの値を入れると、1899年12月30日以前の日付を表示できます。Excel とは異なる結果が表示されて楽しいです。日付シリアルについてはこの記事では厳密な説明は省略します。

20241235 → 57318年8月12日。
5万年後の人類のみなさん!この記事読んでますかー?

表示形式を変更するだけではいけません。

8桁の数字を[年][月][日]に分割?

8桁の数字が「年」が4桁、「月」が2桁、「日」が2桁、として統一されているなら、
その文字列の左から4文字、左から5文字目から2文字、右から2文字を抽出すると、[年][月][日]にデータを分割できます。

=LEFT(B2,4)	
=MID(B2,5,2)
=RIGHT(B2,2)

このデータを、DATE 関数というものを使用して、日付データとなるようにします。

DATE 関数で、年月日を指定して日付データを作成

すると、関数によって表示されたデータが、
右揃えとなっていて、日付(あるいは数値)データとなっていることを確認できます。

=DATE(D2,E2,F2)

TEXT 関数で日付…のように見える文字列を作成

8桁の数値として正確に入力されているのなら、
左から4文字を「年」部分として表示し、そのあとに「/」を表示し、
左から5文字目と6文字目をを「月」部分として表示し、そのあとに「/」を表示し、
左から7文字目と8文字目を「月」部分として表示。

ということをTEXT 関数を使用することで定義できます

=TEXT(B2,"0000""/""00""/""00")
=TEXT(B2,"0000""/""00""/""00")

すると、関数によって表示されたデータが、
左揃えとなっていて、文字列のデータとなっていることを確認できます。

DATE 関数では日付
TEXT 関数だけでは文字列

DATEVALUE 関数で日付シリアルに型変換

日付のような文字列を、DATEVALUE 関数を使用して、日付データとして使用できるように変換します。

このように、2024/12/15という文字が、
1899年12月31日から「45641」日経過した日付、という数値データに変換されました。

この日付シリアルの表示形式を変更することで、日付データとして見やすいものとできます。

日付シリアルのデータの表示形式を日付に変更

この、DATE 関数とDATEVALUE 関数を1つのセルで定義するとこのようになります。

=DATEVALUE(TEXT(B2,"0000""/""00""/""00"))
=DATEVALUE(TEXT(B2,"0000""/""00""/""00"))

まとめ:やりやすいこと、みんながわかりやすいことを大事に作りましょう

Google Workspace 標準機能 Advent Calendar 2024の14日目の記事でした。

日付を8桁の数値でそもそも入力するな、と思う人もいると思いますが、
ウェブサイトのURLやファイル名などに「/」や「-」などを使用できない、という制約があり、8桁の数値を使用しないといけないというシーンはあります。

そんなとき、瞬時に8桁の数値から西暦の日付データに変換したり、
日付データを8桁の数字に変換できると、
業務効率を向上させられます。

TEXT 関数とDATEVALUE 関数2つを使用することで、操作する列を1つだけにして変換できるのですが、このような実装をされて、この関数を使った人以外の人は理解できるだろうか?というのを考えてみましょう。

自分以外の人も、自分と同じくらい、あるいはそれ以上に表計算ソフトに慣れているなら、TEXT 関数とDATEVALUE 関数を見ても意味を理解できるかと思います。
あまりパソコンが得意ではなくて「なんもしてないのに関数が壊れた」というようなことを言ってくる人とも一緒に使用するシートなら、何をしているかの経過がわかりやすかったり、関数名で処理の内容がわかりやすい「LEFT」「MID」「RIGHT」と「DATE」を使用するのもよいかもしれません。

なるべく標準機能を使う、自分以外の人もわかりやすい関数や機能を使用することで、組織全体としてレベルの高いGoogle スプレッドシートの活用ができるようにしていきましょう!

Google Workspace 標準機能 Advent Calendar 2024のご参加者さん、お待ちしています。


いいなと思ったら応援しよう!

この記事が参加している募集