要員ごとに期間内の予定勤務日数を定めて起き、その日数に合わせるように勤務を割り振ります。
割り振った勤務日数が予定の日数に満たない場合は、自動で勤務を割り振って調整。
自動で調整する勤務は、「超過可能数」として、日ごと及び勤務毎に数を指定して置きます。
A.まず、最低限の要員確保。 失敗したら、確保できるまで繰り返す 無限ループなので、キャンセル(ESCキー押下)まで繰り返す B.確保に成功したら、勤務の日数自動調整を行う 調整に失敗したら、ランダム入れ替え(確保の条件を満たしながら)後、 自動調整を繰り返す(10回まで) 調整に失敗したら、再度、A.確保から繰り返す C.最適均等化を行う D.最大時間増加 「改善が見られない最大時間」を15秒づつ増やしていく(初期値30秒) 大きくするほど成功確率大、ただし、時間が掛かる。 赤矢印で、次の処理に移行するかを尋ねるメッセージが表示される。 続行しない場合は、処理を終了。 |
![]() |
使用している名前には、ある程度の規則性を持たせています。
例:条件式の場合、先頭が「条件_」から始まる。
名前 | アドレス |
MSG | =シフト表作成!$T$7 |
SERIAL | =DATA!$B$3:$B$33 |
勤務リスト | =シフト表作成!$D$6:$D$9 |
勤務最大値 | =シフト表作成!$C$56 |
勤務変換表 | =シフト表作成!$M$53:$N$57 |
行数 | =シフト表作成!$C$54 |
集計 | =シフト表作成!$V$60 |
重み_計 | =シフト表作成!$Z$73 |
重み_調整数 | =シフト表作成!$R$86 |
重み_連休 | =シフト表作成!$AE$73 |
重み_連勤 | =シフト表作成!$AI$73 |
出力 | =シフト表作成!$L$40:$R$45 |
条件_確保 | =シフト表作成!$L$88 |
条件_最適化 | =シフト表作成!$L$96 |
条件_調整 | =シフト表作成!$L$91 |
条件_超過日数 | =シフト表作成!$Z$75 |
条件_必須 | =シフト表作成!$L$99 |
条件_不可勤務重複 | =シフト表作成!$M$122 |
条件_予約勤務重複 | =シフト表作成!$M$109 |
条件_要員過多 | =シフト表作成!$R$92 |
条件_要員不足 | =シフト表作成!$M$92 |
条件_乱入替 | =シフト表作成!#REF! |
条件_連続不可重複 | =シフト表作成!$M$131 |
設定値_収束値 | =シフト表作成!$S$55 |
設定値_精度 | =シフト表作成!$S$53 |
前旬 | =OFFSET(シフト表作成!$E$64,0,0,行数,7) |
前旬使用 | =シフト表作成!$W$29 |
前旬列 | =シフト表作成!$E:$K |
表_超過可能 | =シフト表作成!$L$13:$R$16 |
表_要員過多 | =シフト表作成!$L$80:$R$83 |
表_要員不足 | =シフト表作成!$L$75:$R$78 |
不可勤務 | =シフト表作成!$L$20:$R$25 |
分散_計 | =シフト表作成!$Z$72 |
分散_調整数 | =シフト表作成!$R$85 |
分散_連休 | =シフト表作成!$AE$72 |
分散_連勤 | =シフト表作成!$AI$72 |
変化させるセル | =OFFSET(シフト表作成!$L$64,0,0,行数,列数) |
目標_過不足 | =シフト表作成!$M$89 |
目標_最適化 | =シフト表作成!$M$97 |
目標_予定数差 | =シフト表作成!$M$94 |
予定数差 | =シフト表作成!$AA$46 |
予約勤務 | =シフト表作成!$L$102:$R$107 |
列数 | =シフト表作成!$C$53 |
要員設定:必要最少人数を指定
超過可能数:各勤務の人数に幅を持たせます。
空白は要員設定で指定した人数と一致しなければいけない。
下図の例では、日勤のみ、1日(火)~7日(月)に各1名のみ要員設定表の人数より超過可
不可勤務:その日に出来ない勤務を複数指定可
連続不可勤務:勤務並び順びが不可なパターンを記述
予約勤務:予め決めて置きたい勤務を指定
出来上がったシフト表、および
各勤務ごとの日数集計表
連続する休みの個数(3連休/4連休/5連休以上の個数)
連続する勤務の個数(4連勤/5連勤/6連勤以上の個数)
勤務は計算上全て数値として扱います。(1~3が各勤務、0は休みを表す)
初期化、最低要員確保、勤務日数自動調整、最適化などを単独で実行可
初期化以外は、現在のシートデータを元に実行します。
上から順に実行するか、途中のデータ(計算部の変化させるセルの値)を別シートに対ししておき、
復元してから次のコマンドを実行すると良いでしょう。
![]() |
・初期化 - 「変化させるセル」をクリアし、予約勤務を転記 ・確保条件 - 確保条件を定義したソルバーダイアログを表示 「解決」でソルバー実行-確保のみ ・日数自動調整 - 「日数自動調整」の条件を定義したダイアログを表示 「解決」で現在の状態から日数調整のみが行われる ・ランダム入替 配置状態が変化するので日数調整成功しやすくなる。 「全自動実行」の中にも組み込まれている。 ・最適化 - 「目標_最適化」の値が最小になるように再配置 |