見出し画像

【図解あり】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月」と手入力している方はいますか?
文字で入力すると、計算ができなくなって不便になるときがいつか訪れます。

「月」を手入力したら不具合が起こります。

「表示形式」を使用して「月」や「年月」だけ表示

月や年月だけをセル内に「表示」させたい場合は「表示形式」を変更することで実現できます。
日付を入力したセルをクリックして指定し、
表示形式 > 数字 > カスタム日時
をクリックして、月までが表示されるように指定しましょう。

表示形式の変更により、月までを表示したイメージ。計算に使用できる。

「月」という文字を入力してしまうと、そのセルは日付ではなくテキストが入力されてしまうので、翌月を足し算や関数によって表示することが困難になります。表示形式を変更すると、入力された値そのものは日付で、表示されているものが「月」となっているだけで、計算に使用できます。
「月」や「年月」などを表示したいときは「表示形式」を使用しましょう。約束です。

「表示形式」だけではピボットテーブルで集計できない

「表示形式」を変更した以下のセル
2022年12月01日 --> 12月
2022年12月02日 --> 12月
と表示されているものをピボットテーブルで集計したとして、
12月のデータをまとめて表示しようとしても不具合が起こります。

表示形式 を「月」にするだけでは集計ができない

表示形式が「月」でも、実際に入力されている値が、それぞれ別の日付となっているため、このように集計の不具合が起こります。
月ごとに集計したいなら、月初の日付や、月末の日付、など統一した日付の値となるように処理をする必要があります。
その統一した日付の表示形式を「月」に変更したうえで集計することで、正常に集計されるようになるのです。

関数で日付を操作

これ以降で、関数で操作していきます。

入力した日付の当月の末日を表示したい(=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月」と表示形式を変更することで正常に集計ができます。

EOMONTH 関数で月末を求め、集計

入力した日付の翌月(前月)の末日を表示したい

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日しかないのです。指定した月の末日が、元の日付よりも小さい値となる場合は、末日が指定されるようです。

まとめ 日付を操作する関数

日付操作をする関数をまとめると、こんな感じになります。

EOMONTH 関数とEDATE 関数の使い方

EOMONTH 関数、本当に便利ですよね。
この関数の存在を知っているだけで、どれだけ多くの、日付の入力や集計の手間がなくなることでしょう?わくわくしますね。ぜひ、使ってあげてください。

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

Google スプレッドシートの便利関数を解説しました。明日もGoogle スプレッドシートでしょうか。どうしましょうかね。日付が変わるギリギリになるまで追い込まれないと、発想がわかないものです。

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

この記事が気に入ったらサポートをしてみませんか?