dポイントプレゼントキャンペーン実施中!

勤務予定表を作りたいのですが

出勤日は出・休・出・休・出・休・休・出・休・出・休・出・休・休・休の15日を1サイクルとしその繰り返しが予定となります。一日ずつずらしたパーターンをいくつか作ります。

<イメージ>

サイクル1 出 休 出 休 出 休 休 出 休 出 休 出 休 休 休 ・ ・ ・ ・ ・
サイクル2 休 出 休 出 休 出 休 休 出 休 出 休 出 休 休 ・ ・ ・ ・ ・
サイクル3 休 休 出 休 出 休 出 休 休 出 休 出 休 出 休 ・ ・ ・ ・ ・
サイクル4 休 休 休 出 休 出 休 出 休 休 出 休 出 休 出 ・ ・ ・ ・ ・
 ・
 ・
 ・


個人別にサイクルを割り当てます。

Aさんはサイクル1 
Bさんはサイクル2
Cさんはサイクル3
 ・
 ・
 ・

エクセルの表は

月を記入すると自動に日付・曜日が表示されるように設定。
(11日始まり10日締めなので31日の表示のある月ない月がある)
個人名または社員番号を入力すると自動にサイクルが割り当てられられる

<イメージ>
    11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
     月 火 水 木 金 土 日 月 火 水 木 金 土 日 月
Aさん 出 休 出 休 出 休 休 出 休 出 休 出 休 休 休 ・ ・ ・ ・ ・
Bさん 休 出 休 出 休 出 休 休 出 休 出 休 出 休 休 ・ ・ ・ ・ ・
Cさん 休 休 出 休 出 休 出 休 休 出 休 出 休 出 休 ・ ・ ・ ・ ・
Dさん 休 休 休 出 休 出 休 出 休 休 出 休 出 休 出 ・ ・ ・ ・ ・
 ・
 ・
 ・


可能でしょうか?。どなたかご教授ください。

A 回答 (6件)

 15日では割り切れない月もあるという事は、毎月の11日が、必ずしもサイクルの第1日目とはなっていない、と考えて宜しいのでしょうか?


 例えば、2011年の1月11日からサイクルが始まったとした場合、2011年の1月25日が第1周目のサイクルの最後の日となり、2011年の1月26日~2月9日がサイクルの第2周目となり、2011年2月11日はサイクルの第3周目の2日目に当たるため、Bさんが「出」となり、Aさん、Cさん、Dさんは「休」となり、2011年3月11日はサイクルの第4周目の最後の日に当たるため、サイクル4のDさんが「出」となり、Aさん、Bさん、Cさんは「休」となる、という様に考えれば宜しいのでしょうか?(もしも、そうではなく、毎月の11日にサイクルがリセットされて、11日は必ず、サイクルの第1日目になるのだとすると、人によって年間の「出」の日や「休」の日の日数に差が生じてしまう事になります)
 もしも、年や月によってサイクルの節目の日が異なるのだとしますと、使用中のサイクルが始まった起点となる日が、何年何月何日なのかを明記しておかなければ、自動的に計算する事は出来ません。

 今仮に、B2セルにサイクルを開始した日を入力し、
サイクル1~サイクル4というサイクルの名称を、B3~B6に入力し、
C3~Q3に1つ目のサイクルの出休のパターンを入力し、
A8セルに何年の何月度の勤務予定表なのかを入力し、
B10以下に各勤務者が、どのサイクルに従って勤務するのかを入力すると、

C4~Q6には、1行上に入力されている出休のパターンから、1日ずつずれた出休のパターンが、
C列~AG列の8行目には日付が、
C列~AG列の9行目には曜日が、
C列~AG列の10行目以下には、その月度における各勤務者の勤務予定表が、
自動的に表示されるものとします。

 まず、A1セルに「サイクル開始日」と入力して下さい。
 次に、B8セルに「度」と入力して下さい。
 次に、A8セルの書式設定の[表示形式]を[日付]の[2001年3月]に設定して下さい。
 次に、C4セルに次の数式を入力して下さい。

=Q3&""

 次に、D4セルに次の数式を入力して下さい。

=C3&""

 次に、D4セルをコピーして、E4~Q4の範囲に貼り付けて下さい。
 次に、C4~Q4の範囲をコピーして、C5~Q6の範囲に貼り付けて下さい。

 次に、C8セルに次の数式を入力して下さい。

=IF($A$8="","",$A$8+COLUMNS($C:C)+9)

 次に、C8セルをコピーして、D8~AD8の範囲に貼り付けて下さい。
 次に、AE8セルに次の数式を入力して下さい。

=IF(OR($A$8="",$A$8+COLUMNS($C:AE)+9>DATE(YEAR($A$8),MONTH($A$8)+1,10)),"",$A$8+COLUMNS($C:AE)+9)

 次に、AE8セルをコピーして、AF8セルとAG8セルに貼り付けて下さい。
 次に、C9セルに次の数式を入力して下さい。

=TEXT(C$8,"aaa")

 次に、C10セルに次の数式を入力して下さい。

=IF(AND(ISNUMBER(C$8),COUNTIF($B$3:$B$6,$B10)=1),VLOOKUP($B10,$B$3:$Q$6,MOD(C$8-$B$1,15)+2,FALSE),"")

 次に、C9~C10の範囲をコピーして、D9~AG10の範囲に貼り付けて下さい。
 次に、D10~AG10の範囲をコピーして、同じ列の11行目以下に貼り付けて下さい。

 以上で準備は完了で、後は、
B2セルにサイクルを開始した日を、
C3~Q3に1つ目のサイクルの出休のパターンを、
A10以下に各勤務者の名称を、
B10以下に各勤務者が、どのサイクルに従って勤務するのかを、
それぞれ入力しておき、

 月度が変わる毎に、A8セルに新しい月度を、例えば、

2011年7月

或いは

2011/7/1

という形式で入力すれば、

その月度における
日付がC8~AG8に、
曜日がC9~AG9に、
各勤務者の勤務予定表が、C列~AG列の10行目以下に、
自動的に表示されます。
「エクセルで勤務予定表を作成」の回答画像5
    • good
    • 0
この回答へのお礼

ありがとうございます!!!
回答して頂いた内容に感動!。自分の希望した通りにできました。
いろいろ勉強して汎用したいと思います。感謝いたします。

お礼日時:2011/06/15 08:16

 回答番号ANo.5です。


 先程の回答の添付画像では、文字が判別し難いため、念のために、フォントを多少大きくした画像を、再度添付しておきます。
「エクセルで勤務予定表を作成」の回答画像6
    • good
    • 0
この回答へのお礼

ありがとうございます!!!
回答して頂いた内容に感動!。自分の希望した通りにできました。
いろいろ勉強して汎用したいと思います。感謝いたします。

お礼日時:2011/06/15 08:16

私はVBAを使ってやります。

関数では複雑になると思う。
こういうアイデアを生かすにはVBAが出来ないと、関数では複雑になって、自分でやれず、誰かに聞くことになる。
VBAは習得に時間がかかるが、ルールをプログラムに織り込みやすい。
(1)1日づらし
(2)月中日数の変動
などもVBAならできそうだ。
こくみんの祝日などは機械的に決めたパターンを当てはめて良いのか?何も書いてない?
はッきり言って、質問者には関数では無理でないかな。コピペなりして作らざるをえないだろう。
ーー
操作でやる場合に
パターンは、ツールーオプションーユーザー設定リストに定義すると、最初の1セルデータを入れると、連続データの作成的(+ハンドルを出して右へドラッグする)に入れられるのではないか(これを活用できないか)
Aさんに対しBさん分は、1列ずらして最初の「出」など入力し、右へドラッグして貼り付け、月末分以後(11日以後?)オーバーは翌月(回)繰越して張り付ける。
少し作業が楽になるかも。
    • good
    • 0

ANo.1 補足です。


曜日の自動算出は 参考URLなどで可能です。
曜日などにより 出勤者数を調整する必要がなければ
パターン番号は RAND関数を使えばランダムに生成が可能です。

参考URL:http://www.officepro.jp/excelfunc/date/index9.html
    • good
    • 0

作成可能ですよ。



質問文に入力しているんだから、同じように作ればOK。
問題ありません。

楽をしたいなら…
Aさんのパターンを入力したら、そのまま下へコピーして
パターンの最後(右端)のセルを Bさんから最後の人まで選択し、
Shiftキーを押しながらパターンの先頭へドラッグすると、選択したセルを移動挿入できます。
それができたら同様に、Cさんから最後の人までのパターンを選択して移動挿入です。
必要な回数繰り返せば良いでしょう。

あとは、オートフィルでしょうか。
月と入力したセルを横や縦にフィル(選択したセルの右下の黒い点をドラッグすること)すると
 火、水、木、金、土、日、月…
と繰り返し表示される機能です。

 「ツール」→「オプション」を選ぶ
  ↓
 「ユーザー設定リスト」タブを選ぶ
  ↓
 「ユーザー設定リスト」項目→「新しいリスト」を選ぶ
  ↓
 「リストの項目」項目に必要なパターンをカンマ(,)区切りで入力する
  ↓
 「追加」ボタンをクリックする
  ↓
 「ユーザー設定リスト」項目に「出,休,出,休,出,休,休,出,休,出,休,出,休,休,休」と表示されていることを確認する
  ↓
 「OK」ボタンをクリックする。

これで、出を入力した後にフィルを行うと設定したパターンが表示されるようになります。
あとは好きにコピーするなり移動させるなりしましょう。
    • good
    • 0

Excelはロジカルな作業でしたらなんでも可能です。


だから答えは「可能です」
しかしそれ以上は どのようにその作業をしたいのかが
分からないので答えようがありません。
たとえば 名前の横のセルに パターン番号を入れれば
1日から 31日まで出勤パターンが自動で記入される。
> テンプレートのシートに 必要な出勤パターンを全部作っておき
  各セルに IF関数でそれを転記していく
関数を使いたくなければ、マニュアルでコピペする。
などでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!