ランクアップコースでは今週と来週にわたって
【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という具合にすべてのカレンダー部分ができるということになります。
ふと頭をふったりすると、どこかへ飛んでいきそう()
以前はなにげにすんなり理解できていたことが「え~?理解できない」ことしばし・・・なので、
個人メモ的にブログに記載でございます
【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という具合にすべてのカレンダー部分ができるということになります。
ふと頭をふったりすると、どこかへ飛んでいきそう()
以前はなにげにすんなり理解できていたことが「え~?理解できない」ことしばし・・・なので、
個人メモ的にブログに記載でございます