ページ移動:JavaScriptを有効にして下さい!
3.連続勤務不可条件
連続してはいけない勤務の組み合わせを指定
「遅出の翌日は早出禁止」のような連続勤務禁止パターンを指定します。
パターンの指定方法
勤務は0,1,2,3 : 休み、日勤、早出、遅出 のように数字で表していますので、
連続する勤務も、遅出→早出 となる場合は、32のように連続する数字で表現します。
1週間の勤務の連続状態をセルのままでは扱いが難しいので、連結数字とします。
下図セルJ4:J8の数字列
(連結は「&」でセルを繋いでいます。
もう少し期間を長くする場合は、連結用のユーザー定義関数を作成します。)
連続勤務不可パターンの指定表が、下図の
R13:R17の黄色のセル。
(ここでは2つの連続としていますが、もっと多くの連続を指定しても可)
ソルバー用の設定条件:
連続不可条件で指定した数字列が、1週間の勤務数字列に含まれないようにします。
含まれるかどうかは
COUNTIF関数で判定(前後にワイルドカード「
*」を付けて「含まれる」として算定)
-詳しい説明の例は「
ワイルドカードを使った複数回答集計」を参照
-SEARCH関数を使っても可能
5パターン個別に指定するのも面倒なので、
総和をとっています。
この総和(
S18)=0を
ソルバーの制約条件とします。
補足:
数式 =(R13<>"")*COUNTIF($J$4:$J$8,"*"&R13&"*")
は、
=IF((R13="",0,COUNTIF($J$4:$J$8,"*"&R13&"*") と同じ
ソルバー設定フォーム
実行結果
割当勤務をすべて0の状態から開始してみると、下図のように見事に条件を満たして解が求まりました。
解が求まるまでに1~2分(PCの性能により大きく頃なる)
その間
ステータスバー(画面左下)の
目的セルの値が0に近づいていくのを見ていると、
・・・・ ドキドキ(0に収束するかしら?)します。
値が
0になったらソルバー
成功です。
⇊
⇊
次の課題は、個人単位に、「xx日の遅番は不可」のように不可勤務を指定出来るようにします。
ページ移動:JavaScriptを有効にして下さい!
関連