【Excel2010】最小限の入力で自動作成するシフト表 第7回 シフトPart2 月度始め【関数】

Excel_shift_eye

シフト部分の入力方法2回目です。今回は月度始め最初のシフト入力と曜日によって変動する入力位置の処理を紹介します。

月度始めの表示

自動入力を目指しているシフト表ですが、さすがに最初のシフトは入力しないといけません。
理想は、最初のシフトを1箇所入力すると、あとは自動で作成されるというものですが、実現するためにはいくつかの問題をクリアしないといけませんでした。

月度始め入力時の問題点

第1回の「表の構成」内で入力フォームのセル構成を紹介していました。

Excel_shift_002

「最初のシフト」の入力セルは、AM10 です。
ここに入力した A または B の文字列を、月度始めの 21 日に転送するのですが、21日が日曜日だった場合 22日、連休の土日だった場合は 23日が、最初のシフトになってしまいます。

    

    

21日の表示

本来は、入力フォームのシフトが入れば良いだけなのですが、土日のときの休みマーク ○ を自動入力させたいので、土日の判定を盛り込みます。

入力している関数は、以下の通り。

=IF(D9=1,"○",IF(AND(D9=7,AM10="B"),"○",AM10))

日曜日はそのまま ○ の表示で良いですが、土曜日はA番、B番で表示が変わるので、条件分岐を追加します。

コード 意味
IF(D9=1 もし D9=1(日曜日) ならば
“○” 真のとき ○
IF(AND(D9=7,AM10=”B”) 偽のとき もし U9=7(土曜日) かつ AM10=”B” ならば
“○” 真のとき ○
AM=10 偽のとき AM=10 の内容を表示
)) 閉じる

日曜日は休みマーク ○ が表示され、土曜日で入力フォームに入力された文字が B のときは休みマーク ○ が入り、文字列が A のときは、そのまま A が表示されます。

22日の表示

前回紹介した通常週の判別法では、条件によってエラーになってしまいます。

Link_第6回

入力フォームに入力された文字列を絡めた判別法を用います。

入力している関数は、以下の通り。

=IF(E9=1,"○",IF(E9=2,AM10,IF(AND(D10="A",E9=7),"A",IF(AND(D10="B",E9=7),"○",AM10))))

基本的には通常週の判別法と同じです。むしろ条件分岐の数は減っています。

コード 意味
IF(E9=1 もし E9=1(日曜日) ならば
“○” 真のとき ○
IF(E9=2 偽のとき もし E9=2(月曜日) ならば
AM10 真のとき AM10の値を表示
IF(AND(D10=”A”,E9=7) 偽のとき もし D10=”A” かつ E9=7(土曜日) ならば
“A” 真のとき A
IF(AND(D10=”B”,E9=7) 偽のとき もし D10=”B” かつ E9=7(土曜日) ならば
“○” 真のとき ○
AM10 偽のとき AM10の値を表示
))))) 閉じる

下段の表示

下段の表示については、通常週の判別法と同じです。

【Excel2010】最小限の入力で自動作成するシフト表 第6回 シフトPart1 通常週【関数】

    

前回セル指定を相対値で作成していますので、関数をコピペするだけで使えます。

今回までの関数が正しく入力されていると、入力フォームにデータを入力したとき、31日まである月は自動で曜日、シフトが作成されますが、30日までしかない月や2月末が含まれる月は、月末までしか自動作成されない状態になります。

次回は、シフト欄の月末処理を紹介します。

【Excel2010】最小限の入力で自動作成するシフト表 第1回【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第2回 日付Part1【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第3回 日付Part2 月末処理【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第4回 曜日Part1 平常日【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第5回 曜日Part2 月末処理【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第6回 シフトPart1 通常週【関数】

【Excel2010】最小限の入力で自動作成するシフト表 第7回 シフトPart2 月度始め【関数】

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする