「早出および遅出」のような複数の勤務を不可
ここでは、「
早出および遅出は不可」のようにな複数の勤務を不可条件とします。
複数の不可勤務を指定は、「2,3」のように不可の
勤務番号を並べて記述します。
現状、カンマは不要ですが、勤務種別が10個以上になると処理上、必要になります。
また、最終的には分りやすく「早,遅」のような記述形式になります。
ここで入力した不可勤務の項目が、
(自動で割り当てる)勤務シフト表の項目と一致しないことが制約条件となります。
下図では、「不可勤務一致数」が「0」であることが追加される制約条件

数式の意味
{=COUNT(IFERROR(SEARCH(C4:I8,R4:X8),""))}
配列数式として設定
-作業表を使う場合、不可勤務表と同じ大きさの表がもう一つ必要になる
SEARCH関数で不可勤務表の項目内からシフト表の項目が含まれる位置を調べます。
含まれていたらその位置、含まれていなかったらエラー#VALUE!
エラーが出るとカウント出来ないので、
IFERROR関数でエラー時は空白として置きます。
以上を配列数式として式を立てると、各セルに対応して(元の表と同じ大きさの)検索結果の
数値配列ができます。
それを
COUNT関数でカウントすると、
一致した項目数が得られます。
シフト表作成シミュレーション
1.初期化
勤務シフトを(緑枠内)をすべてクリアします。
.2.ソルバーによる人員配置
「
データ」タブ「
ソルバー」から
ソルバーを起動します。
下図のようになっていることを確認(違っていたら下図のように入力)
下図が結果
3.均等再配置
「
アドイン」タブから、「
均等再配置」を起動し、下図のように入力します。
実行すると、
なかなか良好な結果が得られました。
入力する勤務が数値では、大変、分かりにくいですね。
次の課題は、入力方法の改良
次項では、マクロが登場。
ダウンロードファイルが異なり、ブックが異なります。
新しくダウンロードし、
マクロを有効にしてブックを開いてください。