• ベストアンサー

ExcelかAccessで勤務予定表を作りたい

いつもお世話になります。Excel2000、Access2000を勉強中の初心者です。 次のような月間のパート勤務予定表をExcelかAccessでなるべく自動的に作成したいのですが、いいヒントがありましたらよろしくお願いします。 1.パートタイムの従業員がA,B,C,D,E,Fの6人いる。 2.出勤日は土日を除く平日のみである。 3.パート従業員は各人1ヶ月に15日出勤する。各人の出勤しない日は予め前月中に決定している。 4.仕事の担当は肉屋、魚屋、八百屋、レジの4種類である。 5.A,B,C,D,E,Fがひと月の間に4種類の担当をなるべく同じ日数となるようにしたい。 今は、手作業でカレンダーにまず各人の欠勤日を記入し、仕事の担当別にAとかBとか名前を入れていって全員がなるべくどの担当も同じ回数になるように作っています。結構時間がかかっていますので、少しでもパソコンで自動化できるところはないかと考えています。なんでも結構ですので、省力化できることがありましたらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.2

リレーショナルデータベースにしなくてもいいなら、Excelのほうが簡単そうに思えます(って僕エクセルVBAぜんぜんわからないんですが) 次のようにしたらどうでしょう? ・横軸を 曜日と日にちに設定 ・縦軸を 従業員氏名に設定 ・横軸の最後には「肉」の回数、「魚」の回数、「八」の回数、「レ」の回数の合計値を自動計算できる列を作成。 (全部で4列で合計する) 表外に「肉」「魚」「八」「レ」と書いたセルを置く 日程表の値を入力したいところをダブルクリック セルの位置を変数に入れる 「肉」にしたかったら表外の「肉」セルをダブルクリック 指定したセルに「肉」という文字が入る 同時にその従業員の「肉」回数合計列に回数が1つ加算される。 などです。 もしくは次のような形はどうでしょう? ・表外に「肉」「魚」「八」「レ」と書いたセルを横に配置 ・例えば表外の「肉」セルをダブルクリック。 ・そのセルの下に●印が付く。これで「肉」が選択された状態とみなす。「魚」をダブルクリックすると「肉」の下の●が消え「魚」下に移動するようにする。 ・表外の「肉」セルが選択されている間は、表内でダブルクリックした場所に「肉」の文字が入り、「肉」の予定になる。 ・「肉」のところをもう一回ダブルクリックすると「肉」が消え空白になる ・表内の「肉」セルが一個増えると右端の「肉」合計列の値も1個増え、「肉」セルが減れば合計列の値も1つ減るようにする。 ・そうして「肉」の予定だけをどんどん入れていってしまう。 「魚」「八」「レ」も同じようにして、どんどん入れて行き、後はバランスをとる。 (休日も同じ要領で最初に入れておく) これならユーザーフォームも使わなくて済みそうですし、それほど難しくないのではないでしょうか? だめかな? Accessでもフォームで似たようなことをすれば割と簡単にできるような気がします。

haasan99
質問者

お礼

詳しいアドバイスありがとうございます。#1の方がおっしゃるような数学的なところが解決するまではご回答の方法で対応したいと思います。ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

(1)AならAは、(ある日は)朝から晩まで(例えば)肉屋をするのですか。次ぎの日は八百屋とかに変るのですか。肉屋は3-4日続けた方が良いのですか。毎日変る方が良いのでしょうか。 (2)日によって繁忙、暇があって、肉屋、魚屋、八百屋、レジの日別必要予定人数があると思うが、そういうことは書いてないですが考える必要ないのですか。 (3)6人で4種類(肉屋、魚屋、八百屋、レジ)を担当 するのは、肉屋、魚屋、八百屋、レジではある日に、2人と1人の部署が出来ますが良いのですか。 (4)正社員の休みがあって、出勤正社員とのバランスも 考えないといけないのでは。 結局、(A)質問に書いてある条件以外に、考慮すべき、なにかもっと他の制約条件があると思うのですが。 (B)エクセルの関数やVBAのプログラムが念頭にあると思うが、本質問のような、少し緩い条件を与えて、最適解を求めるのは、関数などはとくに苦手だと思う。 (C)アルゴリズム(その通り処理すれば答えが出る手順)が決定的・大切であって、エクセルやアクセスの知識で要求されるものは次ぎの問題であり、むしろ少ないと思う。 むしろ数学的センスに優れた人の答えそうな、数学のカテゴリに質問すべきなように思います。

haasan99
質問者

お礼

アドバイスありがとうございます。 おっしゃるとおり数学的な考え方をまず確立する必要があるようですね。そちらの分野で質問してみます。ありがとうございました。

関連するQ&A