プレミアムフライデーとは、毎月最終金曜日に早く帰って豊かな週末を過ごそうという無理ゲーキャンペーンです。
ところで、パソコンの得意な人たちは、「月末金曜」と聞くと、週末の予定よりもその日付をどうやって計算するかを考えてしまいます。職業病でしょうか?そこで、今回は、月末金曜に関する問題をExcelで出題します。
目次
- 1.プレミアムフライデーの間隔
- 2.月末最終日と月末金曜日の差
- 3.年と月から月末金曜を求める
- 4.任意の日付から月末金曜を求める
- 5.別解:FLOOR関数を用いた計算方法
- 6.プレミアムフライデーの条件式
- 6.テストに出る!重要公式まとめ
- 7.動画版はこちら
1.プレミアムフライデーの間隔
問題
プレミアムフライデーとは毎月最終金曜日のことである。2017年2月24日を第1回プレミアムフライデーとする。セルA1に「2017/2/24」と入力して第2回以降のプレミアムフライデーの日付を順次求めなさい。
解説
同じ曜日であればその間隔は必ず7の倍数になりますが、特に、プレミアムフライデー同士の間隔は必ず28日または35日になります。
1か月=28~31日なので、最終週の28日後は必ず翌月に存在しますが、42日後は必ず翌々月になるからです(21日後や42日後は最終金曜日にならない)。
ちなみに、28日後である確率は約65.2%です。
セルA1の日付がプレミアムフライデーであることがわかっている場合、その次のプレミアムフライデーは原則として28日後(A1+28)です。
そして、28日後と35日後の月が同じ場合は35日後のほうが最終金曜日になるのでプレミアムフライデーになります。この場合は、さらに7を加算します。
したがって、次回のプレミアムフライデーの日付を求める式は次のようになります。
=A1+28+(MONTH(A1+28)=MONTH(A1+35))*7
セルA1に第1回のプレミアムフライデーである「2017/2/24」を入力します。次回のプレミアムフライデーの日付を求める計算式を入力します。
これを繰り返すことによって、第2回以降のプレミアムフライデーの日付を順次求めることができます。
2.月末最終日と月末金曜日の差
問題
行番号ROW()を用いて、第1回から第100回のプレミアムフライデーの日付を求めなさい。
解説
いっぱんに、プレミアムフライデー、つまり最終金曜日の日付を求めるには、当月末日の日付から、金曜日との曜日の差を引きます。金曜日との差を求めて末日からさかのぼるのが鉄則です。
Excelの場合、曜日を求めるWEEKDAY関数は、日~土曜日を1~7の整数で返しますので、末日と金曜日との差は、翌日(翌月1日)の曜日とほぼ一致します。
したがって、Excelの場合、プレミアムフライデーの日付は、当月の最後の日(末日)から、翌月の1日の曜日を7で割った余りを引けばよいです。
曜日を7で割った余りはMOD関数とWEEKDAY関数を使います。
当月末日と翌月1日は1日違いなので、当月末日または翌月1日の日付からプレミアムフライデーを求めることができます。
例えば、第1回のプレミアムフライデーは2017年2月でしたが、翌月の1日は2017年3月1日です。1を引くことで、2月の末日、2017年2月28日を求めることができます。
プレミアムフライデーは月に1回なので、月をn+2とすれば、n回目のプレミアムフライデーとなります。
Excelの場合、行番号ROW()が連番になっているので、これに合わせてプレミアムフライデーの日付を求めます。
したがって、行番号を用いてプレミアムフライデーの日付を求める計算式はつぎのようになります。
- =DATE(2017,ROW()+2,1)-1-MOD(WEEKDAY(DATE(2017,ROW()+2,1)),7)
1行目から100行目までにこの計算式を貼り付けると第1回から第100回のプレミアムフライデーが計算できます。
3.年と月から月末金曜を求める
問題
次の図のように、2017年2月以降の年と月が与えられている場合にプレミアムフライデーの日付を求めなさい。
解説
年と月が与えられている場合もさきほどの公式に当てはめて計算します。
年と月を参照しながら、計算式を入力します。
- =DATE(A2,B2+1,1)-1-MOD(WEEKDAY(DATE(A2,B2+1,1)),7)
これでプレミアムフライデーが計算できます。
4.任意の日付から月末金曜を求める
問題
セルC2に2017年2月以降の任意の日付を入力して、セルD2に、同じ月のプレミアムフライデーの日付を求めなさい。
解説
任意の日付からその月の最後の日を求めるにはEOMONTH関数を使います。翌月の1日は1を足すだけです。
これをプレミアムフライデーの公式に当てはめます。
セルC2に任意の日付を入力します。計算式を入力します。
- =EOMONTH(C2,0)-MOD(WEEKDAY(EOMONTH(C2,0)+1),7)
これで最終金曜日を求めることができます。1日の日付を入力してその隣にプレミアムフライデーの日付を求めることができます。
(表示形式を変える)
5.別解:FLOOR関数を用いた計算方法
問題
さきほどの問題についてFLOOR関数で求めなさい。
解説
上記の計算方法のほかにFLOOR関数を用いる方法があります。詳しくはこちらの記事をご覧ください。
- 最終金曜日:=FLOOR(今月末+1,7)-1
- 最終金曜日:=FLOOR(翌月月初,7)-1
年と月が与えられている場合は、DATE関数で求めます。
- =FLOOR(DATE(A2,B2+1,1),7)-1
任意の日付からその月の最終金曜を求めるには、EOMONTH関数を使います。
- =FLOOR(EOMONTH(C2,0)+1,7)-1
6.プレミアムフライデーの条件式
問題
セルC2に任意の日付を入力したときに、その日がプレミアムフライデーかを判定しなさい。
解説
月末最終金曜日であるための条件は、その日が金曜日であることと、7日後が次の月にまたがることです。
その日がプレミアムフライデーであれば、その2つの条件を同時に満たしているはずです。
計算式を入力します。TRUEまたはFALSEで判定できます。
- =(WEEKDAY(C2)=6)*(MONTH(C2)<>MONTH(C2+7))
さらに、「プレミアムフライデー」というキャンペーンが始まったのが2017年2月なので、それ以降であることを判定するには、2017年2月1日のシリアル値42767と比較する条件式の追加が必要です。
6.テストに出る!重要公式まとめ
解説は以上です。
7.動画版はこちら
この記事は、わえなび特別講義「プレミアムフライデー(月末金曜)を求める公式と日付の計算方法」のYoutube動画を書き起こしたものです。
