ページ移動:JavaScriptを有効にして下さい!

8.勤務指定方法


リストから勤務名として指定できるようにする

改良項目


・勤務を数値ではなく、名称で入力

  計算用は数式で自動変換

・日付をプルダウンメニューから選択

  作成週を切り替えられるようにする

・範囲名に名前

 セルアドレスではなく、名前で参照する

・ワークシートの改良

  色分け表示、セル位置変更

・ユーザー定義関数

  数式を補助するために簡単な関数を作成

  文字列連結MyConnectAll: 指定範囲の全文字列を連結
     1週間分の勤務を「&」連結するのは許容範囲としても、2週間以上となるとみっともないので!
   全文字置換MyReplaceAll: 勤務名を数値に全て置換
     置換対象が複数種類ある場合、数式だけでは非常に困難。

  その他の数式はほとんど同じなので、説明は省略します。






シミュレーションの実行


下記の手順で実行します。

1.入力部の黒枠内に必要なデータを入力

  日付、必要人数、連続不可勤務はプルダウンメニューから入力
  不可勤務は直接文字入力
    → 後にチェックボックスで選択できるように改良

2.ソルバーを実行
    既定の入力値でそのまま実行可

    目的セル(過不足計)が0に収束しない場合があります。
    その場合は、再度「初期化」をしてソルバーを実行してください。
    (乱数を使っているらしく、毎回、挙動が異なるようです。)


3.「均等再配置」を実行
    既定の入力値でそのまま実行可

以上。

上図が全体図および実行結果

赤枠が、ソルバー用の入力セル範囲

緑枠が、「均等再配置」用の入力セル範囲

青枠が、ソルバーおよび「均等再配置」共通の入力セル範囲

ユーザー定義関数

Function MyConnectAll(範囲 As Range, Optional 区切り文字 As String = "") As String ' ' 範囲内の文字列をすべて連結 ' それぞれの文字の間には区切り文字を連結:省略可 ' Dim tmp MyConnectAll = "" For Each tmp In 範囲 If MyConnectAll <> "" Then MyConnectAll = MyConnectAll & 区切り文字 MyConnectAll = MyConnectAll & tmp Next End Function Function MyReplaceAll(データ, 変換テーブル As Range) As String ' ' 含まれる文字をテーブルをもとにすべて変換 ' Dim k As Integer Dim Tbl Tbl = 変換テーブル MyReplaceAll = データ For k = 1 To UBound(Tbl, 1) MyReplaceAll = Replace(MyReplaceAll, Tbl(k, 1), Tbl(k, 2)) Next k End Function 

名前一覧


補足: 指定日を休みにしたい場合

この不可勤務に、全ての勤務を並べて置く ことで、休みを実現することができます。
(全ての勤務が不可 → 勤務が割り当てられない → 休み)

最終的には、予約勤務で「公休」などの休みを予約できるように・・・したい。


次項では、マクロを使用して、なるべく全自動化します。

また、不可勤務の入力を改良(できるかぎり)します。

ページ移動:JavaScriptを有効にして下さい!

関連

×
PageTop