いまさら聞けないExcelの使い方講座
【Excel】年・月・第○週を入力すると自動で日付が切り替わる当番表を作る方法
2023年9月20日 06:55
毎月「第○週」の当番表を作る
スケジュールをデジタルデータとして管理する前に、手書きが必要な場面がありますよね。例えば、作業の割り振りを決めるために紙の表を回覧したり、外回りの現場でパソコンが使えなかったりする時も紙のチェック表が使われます。
この表を使い回す場合、担当欄はそのままで日付を書き換えて印刷するでしょう。セルB2の「10月9日」を書き換えてオートフィルでコピー、もしくは、セルC2~H2まで「=B2+1」のような数式が入力されていて、セルB2と連動して日付が更新されるかもしれません。
しかし、この表を毎週作るのは面倒。何週分かまとめて印刷したくなりますが、週初めの日付を間違えて、やり直す状況が容易に想像できます。今回は、週替わりの当番表を例に「年」「月」「第○週」を指定して日付を更新できる仕掛けを紹介します。
DATE関数で月初日を求める
「年」と「月」の入力欄を用意しておきます。以下の例は「2023」年「10」月を意図しています。「年」「月」の情報があれば、DATE関数を使って月初日(一日)を簡単に求められます。DATE関数の引数[年][月][日]に数値を指定すると「=DATE(A2,B2,1)」となります。「1」は一日の意味です。
WEEKDAY関数で月初日の曜日を求める
続けて、WEEKDAY関数を使って「2023/10/1」の曜日を求めます。WEEKDAY関数は日付(シリアル値)の曜日にあたる数値を返します。構文は以下の通りです。引数[週の基準]を省略した場合、日曜日~土曜日にあたる数値として「1」~「7」が返されます。
DATE関数とWEEKDAY関数から週初めの日付を求める
WEEKDAY関数の結果「1」から2023/10/1は日曜日であることがわかりました。日~土には「1」~「7」が割り当てられているため、この数値を元の日付から引くことで直前の土曜日の日付を求めることができます。以下に各月の計算結果を求めてみました。
以上をふまえて元の表に戻ります。土曜日(7)の2日後が月曜なので「+2」すれば、月初日が含まれる週の月曜日の日付を求められます。数式は「=E2-F2+2」です。
なお、DATE関数とWEEKDAY関数を組み合わせて「=DATE(A2,B2,1)-WEEKDAY(DATE(A2,B2,1))+2」としても同じ結果を求めることができます。
SWITCH関数で「第○週」を切り替える
指定した「第○週」によって日付が書き換わるようにします。数値によって場合分けするには、SWITCH関数が便利です。セルG2の数式で求めた日付を基準に「+7」「+14」……と足し算します。存在しない第六週などが指定された場合は「月を切り替えてください」と表示させます。
この数式の結果は月の第○月曜日ではなく、第○週目の月曜日を表示していることに注意してください。例えば第一月曜日を求めるには、IF関数でWEEKDAY関数の結果を判定して「=IF(WEEKDAY(E2)>2,7-WEEKDAY(E2)+2,2-WEEKDAY(E2))+E2」のような数式が考えられます。
DATE関数とWEEKDAY関数を組み合わせるテクニック
7日周期で切り替わるWEEKDAY関数の結果を利用したテクニックです。月初日や月末日を基準に○曜日を知りたいことがたまにあります。WEEKDAY関数の戻り値が数値で返されることを覚えておくと、計算式の作成のヒントになりますよ。