いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)月の最後のx曜日の日付を求める

 Googleスプレッドシートで、指定した月の最後のx曜日を求める方法についてです。
 月の最後の金曜日、あるいは最後の日曜日、といったように曜日を指定して求めることができます。

  • WORKDAY.INTL関数等を使って、月の最後のx曜日を求めることができます。

手順

f:id:accs2014:20210221135818p:plain:right:w600

 C2セルには基準月(に属する日付)が入力されています。
 この月の最後の各曜日の日付を求めます。つまり、2021年3月の最後の日曜日から金曜日までのそれぞれの日付を求めるものとします。

 C5~C11セルに次のように入力します。

 C5~C11セル

=WORKDAY.INTL(EOMONTH(C2,0)-7,1,"1111110")
=WORKDAY.INTL(EOMONTH(C2,0)-7,1,"0111111")
=WORKDAY.INTL(EOMONTH(C2,0)-7,1,"1011111")
=WORKDAY.INTL(EOMONTH(C2,0)-7,1,"1101111")
=WORKDAY.INTL(EOMONTH(C2,0)-7,1,"1110111")
=WORKDAY.INTL(EOMONTH(C2,0)-7,1,"1111011")
=WORKDAY.INTL(EOMONTH(C2,0)-7,1,"1111101")

 WORKDAY.INTLを使っています。
 まずはC5セルの式をみてみますが、第1引数を「EOMONTH(C2,0)-7」とすることで、月の最終日の7日前の日付を求めています。月の最終日は「2021/3/31」ですので、「2021/3/24」が返ります。
 第2引数を1(第1引数の日付の翌日以降の最初のx曜日を求める)とし、さらに第3引数を「"1111110"」とすることで日曜日を指定しています。検索の対象は3月25日以降となりますので、これで月の最後の日曜日が求まるというわけです。
 C6セル以降の式もほとんど同じで、異なるのは第3引数の曜日指定の部分だけです。WORKDAY.INTLの引数指定は独特で、慣れるまでがちょっと大変ですが、この方法だと「月末の日付が何曜日か」などといった要素を考慮せず、ほとんど同じ式を適用できるのがメリットです。


f:id:accs2014:20210221135822p:plain:right:w600

 結果はこうなります。
 2021年3月31日は水曜日なので、正しい結果になっていることがわかります。

 

f:id:accs2014:20210221135826p:plain:right:w600

 ちなみに、基準月の指定を「2021/4/15」としてみたときの結果です。
 2021年4月30日は金曜日なので、こちらも正しい日付が求められているのがわかります。

 なお、月の「最初の」x曜日を求める例は次の記事で紹介しています。

www.officeisyours.com