武蔵小山パソコン教室 de パセリな毎日

武蔵小山教室パソコン教室
「たのしいパソコンじゅく」講師の
パ(ソコンで)セ(生活を)リ(ッチに)
な毎日☆

WEEKDAY関数でその週の日曜日の日付を求める

2013-06-28 13:59:10 | パソコン使い方あれこれ
ランクアップコースでは今週と来週にわたって
【B5用紙、5枚を使って、半期分のスケジュール帳を作ろう】の課題です。
作成するのは楽しいですが、
カレンダー部分を作成するのに関数を使ってちょっと難しくなっています。
関数でカレンダーを一度作成しておくと、
ちょっと直すだけで間違いなく変わってくれるので、難しいけど汎用性がありますね

カレンダー部分を作成する際、
ちょっと理解しずらくて、講師もの状態になってしまうロジックが、
各月の1日がどこに来るか?
言い換えると、その月の1日はたいてい一番上の行に表示しますが、
その際、【1日のある週の始まりとなる日曜日の日付をどうやって求めるか】というところです。

ここで、WEEKDAY関数がご登場~!

【WEEKDAY関数は特定日の曜日を数値で返す】
WEEKDAY(日付データ)⇒日1:月2:火3:水4:木5:金6:土7 の値を返します。

たとえば、2013年7月1日は 月曜日なので WEEKDAY(2013年7月1日)=1
なので、ざっくり言うとWEEKDAY関数でその月の1日が
起点日の日曜日の日付データからどのくらい離れているかがわかるわけです。

起点日(日)から1日離れていると月曜日。2日離れていると火曜日。6日離れていると土曜日です。
これを逆算すれば、起点日の日付が求まりますね。


数式バーには

DATE($E$35,E37,1)-WEEKDAY(DATE($E$35,E37,1),1)+1

とあります。WEEKDAY関数は引数で最後に1を指定した場合、上記にあったように月=1で返しますので、
+1をしてあります。

この$E$35とはこの場合、【2013】と入力されている部分で、E37は【7】と入力されている部分になります。
ここで、
DATE($E$35,E37,1)は7月1日となり、

DATE($E$35,E37,1)-WEEKDAY(DATE($E$35,E37,1),1)+1は
6月30日(日)になります。

先にここの部分を求めておけば、あとはお隣のセルは+1
下のセルは土曜日+1という具合にすべてのカレンダー部分ができるということになります。

ふと頭をふったりすると、どこかへ飛んでいきそう(
以前はなにげにすんなり理解できていたことが「え~?理解できない」ことしばし・・・なので、
個人メモ的にブログに記載でございます