いきなり答える備忘録

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

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

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

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

手順

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

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

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

 C5~C11セル

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

 WORKDAY.INTLを使用しています。
 まずはC5セルの式ですが、第1引数を「EOMONTH(C2,-1)」とすることで、前の月の最終日の日付を求めています。この例では前の月の最終日は「2021/3/31」となります。
 そして第2引数を1(第1引数の日付の翌日以降の最初のx曜日を求める)とし、さらに第3引数を「"1111110"」とすることで日曜日を指定しています。検索の対象は4月1日以降となりますので、これで月の最初の日曜日が求まるというわけです。
 C6セル以降の式もほぼ同じで、異なるのは第3引数の曜日指定の部分だけです。
 

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

 実行結果はこうなります。
 2021年4月1日は木曜日なので、正しい結果になっていることがわかります。

 

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

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

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

www.officeisyours.com

 また、上記の式のWORKDAY.INTL関数の第2引数を「2」(「3」)に変えると、月内の第2回目(第3回目)のx曜日の日付が求められます。
 ただし(5以上の数値を指定したときに)翌月以降の日付になってしまう可能性がありますので注意が必要です。