[[20091011094957]] 『交替勤務の勤務表作成』(エクセル初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『交替勤務の勤務表作成』(エクセル初心者)

エクセルにて4班3交替の勤務表を作ろうとしています。

交替サイクルは、

A班  1 1 1 1 休 2 2 2 2 休 3 3 3 3 休 休 1 1 1 1 ・・・

B班  3 3 休 休 1 1 1 1 休 2 2 2 2 休 3 3 3 3 休 休・・・

C班  2 休 3 3 3 3 休 休 1 1 1 1 休 2 2 2 2 休 3 3 ・・・

D班  休 2 2 2 2 休 3 3 3 3 休 休 1 1 1 1 休 2 2 2 ・・・

班構成はA・B・C・D班の4班です。

横型のカレンダーで

C1に西暦、A5に月、C3からAG3まで日にち、C4からAG4まで曜日がとってあります。

現在、日にちと曜日までは西暦を入力すると自動で作成出来るものをつくりました。

B5〜B8には班の名前(A〜D班)が表示してあります。

   A  B   C   D   E   F   G ・・・ AG
1           西暦
2
3      1  2  3  4  5 ・・・ 31
4      金  土  日   月  火    日
5  1  A
6  月  B
7       C
8       D

1月1日の各班の勤務つ入力すると自動で31日まで作りたいと思います。

よい方法があれば教えてください。


 「サイクルのスタートがいつなのか」を判定する情報が足りません。

 例えば、最近、A班が連休明けした年月日はいつだったか、と云う情報です。

 (半平太) 2009/10/11 11:11

サイクルのスタートは、

1/1(A班)が2勤の4日目

1/2(A班)が休み

1/3(A班)が3勤の1日目

1/4(A班)が3勤の2日目・・・

というサイクルになります。

情報が足りず申し訳ございませんでした。

(エクセル初心者)


 Sheet2 に交替サイクル一覧を作成

 Sheet2

   A  B C D E F  G ・・・
 1 A班  1 1 1 1 休 2 2 2 2 休 3 3 3 3 休 休 1 1 1 1  
 2 B班  3 3 休 休 1 1 1 1 休 2 2 2 2 休 3 3 3 3 休 休 
 3 C班  2 休 3 3 3 3 休 休 1 1 1 1 休 2 2 2 2 休 3 3 
 4 D班  休 2 2 2 2 休 3 3 3 3 休 休 1 1 1 1 休 2 2 2 

 C5=INDEX(Sheet2!1:1,MOD(C$3+2,16)+2)

 By しげちゃん

 Sheet1に
C3:=DATE($C$1,$A$5,1)
D3:=C3+1からAB3までコピー
AD3:=AC3+COLUMN($A1)
AE3:=IF(MONTH($C3+COLUMN(AB1))<>$A$5,"",$C3+COLUMN(AB1))からAG3までコピー
C5:=IF(B5="","",(VLOOKUP(B5,Sheet2!A1:AF4,2,FALSE)))からAG8までコピー
Sheet2に
	A	B	C	D	E	F	G	H	I	J	K	L	M	N	O	P	Q	R	S	T	U	V	W	X	Y	Z	AA	AB	AC	AD	AE	AF
1	A	1	1	1	1	休	2	2	2	2	休	3	3	3	3	休	1	1	1	1	休	2	2	2	2	休	3	3	3	3	休	休
2	B	3	3	休	休	1	1	1	1	休	2	2	2	2	休	3	3	3	3	休	休	1	1	1	1	休	2	2	2	2	休	3
3	C	2	休	3	3	3	3	休	休	1	1	1	1	休	2	2	2	2	休	3	3	3	3	休	休	1	1	1	1	休	2	2
4	D	休	2	2	2	2	休	3	3	3	3	休	休	1	1	1	1	休	2	2	2	2	休	3	3	3	3	休	休	1	1	1
を作るでどうでしょうか、曜日等に色をつけたい場合は条件付き書式で設定する。
これはこの学校で教わりました。
(パンパン)

 C1,A5は任意に変更したいということではないでしょうか?
 > =INDEX(Sheet2!1:1,MOD(C$3+2,16)+2)
 > =IF(B5="","",(VLOOKUP(B5,Sheet2!A1:AF4,2,FALSE)))
 これでは、毎月シフトリストの変更が必要になるのでは?、コピペでずらすだけで済みそうではありますが・・・

 C1セルに「2009」年、A5セルに「1」月、C3セルから「1」日・・・・と入力するということで、
 =IF(MOD((MOD(DATE($C$1,$A$5,C$3)-DATE($C$1-1,12,31)+8,16)),5)=0,"休",
INT((MOD(DATE($C$1,$A$5,C$3)-DATE($C$1-1,12,31)+8,16)-1)/5)+1)
 といったことでしょうか?
 1セットが16日で16で割った余りを計算します。
 5で割った余りが0のときが「休」であり、あとは5の何倍かで1〜3勤が求められるとの考えです。
 最初の基準日は2009/1/1が1となるように設定して、その時点のずれを+8で調整しています。

 なお、C3セルの日が日付2009/10/1のようになっているなら、C$3はDAY(C$3)にします。
 また、エラー処理なしです。
 
10月は以下のようになったのですが、ずれていますか? (Hatch)
		1	2	3	4	5	6	7	8
		木	金	土	日	月	火	水	木
10	A	休	3	3	3	3	休	休	1


 (Hatch)さんへ

 >1セットが16日で16で割った余りを計算します。
 >5で割った余りが0のときが「休」であり、あとは5の何倍かで1〜3勤が求められるとの考えです。
 矛盾しませんか?

 >C1,A5は任意に変更したいということではないでしょうか?
 そのつもりで回答しているつもりです

 >現在、日にちと曜日までは西暦を入力すると自動で作成出来るものをつくりました。
 と言うことなので 3行目はシリアル値と思っています

 By しげちゃん

 >> C1,A5は任意に変更したいということではないでしょうか?
 > そのつもりで回答しているつもりです

 > 3行目はシリアル値と思っています
 失礼しました。そのようになっていました。
 シリアル値での確認を怠っていました。
 失礼なことを書いたことお詫びいたします。

 > 矛盾しませんか?
 私の説明については、おかしなことを書いているのでしょうか?
 書いた本人だけが分かっているつもりになっているのかもしれませんね・・・

 ついでですから、シリアル値のときの簡略化した数式に修正しておきます。 (Hatch)
=IF(MOD((MOD(C$3+3,16)),5)=0,"休",INT((MOD(C$3+3,16)-1)/5)+1)

 =MID("1111休2222休3333休休",MOD(A$1-1,16)+1,1)
=MID("1111休2222休3333休休",MOD(A$1+3,16)+1,1)
=MID("1111休2222休3333休休",MOD(A$1+7,16)+1,1)
=MID("1111休2222休3333休休",MOD(A$1+11,16)+1,1)
    (NANA)




ありがとうございました (エクセル初心者)

皆さんのおかげで無事に作成することができました。

これからも、もっと勉強していきたいと思います。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.