第3月曜日など「第Nなんとか曜日」が何日かを1行の式で算出する方法【Googleスプレッドシート、Excel】

calendar_sizeXS

第2水曜日など、「第Nなんとか曜日」を Google スプレッドシートや Excel で1行で算出する方法をメモしておきます。

Google スプレッドシートでも Excel でもどちらでも使える方法です。

急いでいる人向けのコピペ(第1なんとか曜日)

※すべてA1セルに月初日が入っている前提です。月初日の求め方は後述。

第1日曜日:
=IF(WEEKDAY(A1)>1,(7-(WEEKDAY(A1)-1))+A1,1-WEEKDAY(A1)+A1)

第1月曜日:
=IF(WEEKDAY(A1)>2,(7-(WEEKDAY(A1)-2))+A1,2-WEEKDAY(A1)+A1)

第1火曜日:
=IF(WEEKDAY(A1)>3,(7-(WEEKDAY(A1)-3))+A1,3-WEEKDAY(A1)+A1)

第1水曜日:
=IF(WEEKDAY(A1)>4,(7-(WEEKDAY(A1)-4))+A1,4-WEEKDAY(A1)+A1)

第1木曜日:
=IF(WEEKDAY(A1)>5,(7-(WEEKDAY(A1)-5))+A1,5-WEEKDAY(A1)+A1)

第1金曜日:
=IF(WEEKDAY(A1)>6,(7-(WEEKDAY(A1)-6))+A1,6-WEEKDAY(A1)+A1)

第1土曜日:
=7-WEEKDAY(A1)+A1

第2曜日以降は「7」「14」「21」を足せばOK

第2なんとか曜日は「7」を足す。第3なんとか曜日は「14」を足す。第4なんとか曜日は「21」を足せばOKです。

以下、第4水曜日の例:
=IF(WEEKDAY(A1)>4,(7-(WEEKDAY(A1)-4))+A1,4-WEEKDAY(A1)+A1)+21

月初日の算出方法

月初日の計算方法は次のとおりです。(Excel は2007以降、Googleスプレッドシートも可)

=EOMONTH(指定日,-1) +1

解説

第Nなんとか曜日を求めるには、まず、月初日、つまりその月の1日が何曜日かを調べて、そこに WEEKDAY 関数から帰ってきた値を足してやる、というのが基本的な方針です。

Googleスプレッドシートや Excel の WEEKDAY 関数は、日曜日が「1」、月曜日が「2」…土曜日を「7」として返します。

WEEKDAY 関数は、土曜・日曜の間で連続性がありませんので、今回はIF関数を使ってパターン分けをしました。

※今回のロジックはとある用事で自前で作ったものなので、もっとエレガントな方法がありそうな予感はしますが…。

Hatena Pocket Line

この記事へのコメント(1件)

  1. 匿名 says:

    4年前

    エレガント…とは行きませんが、日・月曜日なら以下の方法が見やすいかと。
    日曜日
    =7-WEEKDAY(A1-1)+A1
    月曜日
    =7-WEEKDAY(A1-1,2)+A1

コメントを記入