![見出し画像](https://assets.st-note.com/production/uploads/images/92683312/rectangle_large_type_2_38399b1909cdd0b04111ddec0451eaec.png?width=1200)
【解説動画・図解あり】Google スプレッドシートで月末 / 月初 などの日付の操作「EOMONTH」「EDATE」
文章でわかりにくい人はショート動画も観てみて!
図解で理解したい人はこちら!
この記事はGoogle Workspace 標準機能 Advent Calendar 2022の6日目の記事です。
こんにちは!ゆるふわクラウドおじさん こと、Teeda と申します。『Google アプリの教科書シリーズ』という本を毎年Amazon で販売していたり、Udemy という世界最大級のe-Learning プラットフォームで動画教材を配信したい人の、動画制作支援をしていたりします。
普段からGoogle Workspace や各種Google アプリの機能を使い、Google スプレッドシートで圧倒的時短ツールを作れないか妄想しています。みんなで便利な機能を共有できたらなあと思い、アドベントカレンダーを始めました。
アドベントカレンダーを作成するのは初めてで、これが6日目の記事です。アドベントカレンダーをしてから2週目になります。なんと、ここまで私ひとりで書いています。頑張っています。
機能そのものを紹介するという記事のネタが尽きそうです。今日は、私の大好きなアプリであるGoogle スプレッドシート、その中でも最も好きな関数のひとつ「EOMONTH」が登場します。
どなたでも、どんな機能でも気軽に書いていただいてかまいませんので、ぜひアドベントカレンダーにご参加くださいね。
Google スプレッドシートで日付を操作する
Google スプレッドシートに入力された日付を便利に操作する方法を解説します。
表計算ソフトで日付を操作したいとしたら、こんなことができたら十分かと思います。いやいや、もっとこういうこと解説しろや!という方はぜひコメントやメッセージいただけたらうれしいです。
入力した日付(yyyy/mm/dd)から年月形式で表示したい
例:2022/12/06 --> 2022年12月入力した日付の当月の末日を表示したい
例:2022/12/06 --> 2022/12/31入力した日付の翌月の末日を表示したい
例:2022/12/06 --> 2023/01/31入力した日付の前月の末日を表示したい
例:2022/12/06 --> 2022/11/30入力した日付の当月の1日を表示したい
例:2022/12/06 --> 2022/12/01入力した日付の翌月の1日を表示したい
例:2022/12/06 --> 2023/01/01入力した日付と同じ日で、前月の日を表示したい
例:2022/12/06 --> 2022/11/06入力した日付と同じ日で、翌月の日を表示したい
例:2022/12/06 --> 2023/01/06
こんなところでしょう。これらを実現するには、たったふたつの関数
EOMONTH(End Of MONTH の略。末日を求める)
EDATE(Expiration DATE の略。同じ日付の別の月の日付を求める)
を覚えるだけでよいのです。
これから、解説していきます。
日付を「年月」で表示する
Google スプレッドシートやExcel でセルに日付を入力したとき、
「日付」ではなくて「月」を表示したいんだ!
ということはよくありますよね。
2022年12月6日として入力した値から、
12月 だけを表示したい時、
「12月」と手入力している方はいますか?
文字で入力すると、計算ができなくなって不便になるときがいつか訪れます。
![](https://assets.st-note.com/img/1670243267748-tXrQTiUMd8.png?width=1200)
「表示形式」を使用して「月」や「年月」だけ表示
月や年月だけをセル内に「表示」させたい場合は「表示形式」を変更することで実現できます。
日付を入力したセルをクリックして指定し、
表示形式 > 数字 > カスタム日時
をクリックして、月までが表示されるように指定しましょう。
![](https://assets.st-note.com/img/1670243537647-14gSxgHhOd.png?width=1200)
「月」という文字を入力してしまうと、そのセルは日付ではなくテキストが入力されてしまうので、翌月を足し算や関数によって表示することが困難になります。表示形式を変更すると、入力された値そのものは日付で、表示されているものが「月」となっているだけで、計算に使用できます。
「月」や「年月」などを表示したいときは「表示形式」を使用しましょう。約束です。
「表示形式」だけではピボットテーブルで集計できない
「表示形式」を変更した以下のセル
2022年12月01日 --> 12月
2022年12月02日 --> 12月
と表示されているものをピボットテーブルで集計したとして、
12月のデータをまとめて表示しようとしても不具合が起こります。
![](https://assets.st-note.com/img/1670244355410-9iHtj34ufA.png?width=1200)
表示形式が「月」でも、実際に入力されている値が、それぞれ別の日付となっているため、このように集計の不具合が起こります。
月ごとに集計したいなら、月初の日付や、月末の日付、など統一した日付の値となるように処理をする必要があります。
その統一した日付の表示形式を「月」に変更したうえで集計することで、正常に集計されるようになるのです。
関数で日付を操作
これ以降で、関数で操作していきます。
入力した日付の当月の末日を表示したい(=EOMONTH([日付],0))
ある日付の、指定した月数後の末日を求めるという関数にEOMONTH(End Of MONTH)というものがあります。
2022年12月01日 ⇒ 2022年12月31日
2022年12月02日 ⇒ 2022年12月31日
・
・
・
2022年12月31日 ⇒ 2022年12月31日
のようにして、統一された「2022年12月31日」を
「12月」と表示形式を変更することで正常に集計ができます。
![](https://assets.st-note.com/img/1670245248248-PyLdjQbbk8.png?width=1200)
入力した日付の翌月(前月)の末日を表示したい
EOMONTH 関数は、第1引数には[日付]、第2引数には[何ヶ月後か]を指定します。
=EOMONTH([日付],0)
は、0ヶ月後の月末、つまり当月の末日を求めます。
この「0」を変更して
「1」:1ヵ月後 --> 翌月末
「-1」:-1ヵ月後 -->前月末
を求めることができます。
月末を求めて表示できると、
請求書の発行日を入力し、発行日の末日や翌月末を「お支払期日」として表示するのが楽になります。
指定した月の「1日」の日付を表示したい
1日って、どういう日でしょうか?月の最初の日ですよね。
月の最初の日ということは、月末日の翌日だという解釈ができますよね。
つまり、EOMONTH 関数で求めた末日に、1を足すと翌月の1日となるのです。
入力した日付の前月の1日を表示
=EOMONTH(日付,-2)+1
入力した日付の当月の1日を表示
=EOMONTH(日付,-1)+1
入力した日付の当月の1日を表示
=EOMONTH(日付,0)+1
入力した同じ日で、別の月の日付を表示したい
入力した[日]から指定した月数後の日付を求めるには、
EDATE 関数(Expiration DATE の略)を使用します。
EOMONTH 関数と同じような使い方をします。
入力した日付と同じ日の前月の日付を表示
=EDATE(日付,-1)
入力した日付と同じ日の当月の日付を表示
=EDATE(日付,0)
入力した日付と同じ日の翌月の日付を表示
=EDATE(日付,1)
毎月25日に給与振込の処理をするタスクをGoogle スプレッドシートで管理する、といった時には便利ですね。
ちなみに・・・1月31日から1か月後の同じ日にち、2月には31日は存在しませんね?そんな時はどうなるでしょう?
4 , 6 , 9 , 11 月は30日しかないのです。指定した月の末日が、元の日付よりも小さい値となる場合は、末日が指定されるようです。
まとめ 日付を操作する関数
日付操作をする関数をまとめると、こんな感じになります。
![](https://assets.st-note.com/img/1670248055236-syyJ33PN5u.png?width=1200)
EOMONTH 関数、本当に便利ですよね。
この関数の存在を知っているだけで、どれだけ多くの、日付の入力や集計の手間がなくなることでしょう?わくわくしますね。ぜひ、使ってあげてください。
Google Workspace 標準機能 Advent Calendar 2022の6日目の記事でした。
Google スプレッドシートの便利関数を解説しました。明日もGoogle スプレッドシートでしょうか。どうしましょうかね。日付が変わるギリギリになるまで追い込まれないと、発想がわかないものです。
Google Workspace 標準機能 Advent Calendar 2022のご参加者さん、お待ちしていますね。