• ベストアンサー

エクセルで回数を指定して出勤表を作りたい

 エクセルを使って,出勤表を作りたいと思っています。1月ごとのカレンダーで,3班体制なので,ある日は1班。次の日は2班というようにしたいのです。  曜日に関しては,土日祝以外になります。  1番問題なのは,平日をすべて出勤するのではなくて,各月ごとに,班毎の出勤回数を指定したいのです。  そこで,どこかのセルにその月の出勤回数を6なら6と入力することで,自動的にカレンダーに1班,2版,3班と入力されるようにしたいのです。  どの日を未出勤日にするか等の指定はありません。  得るにはいった数値でそれに合わせた回数を自動入力させる方法があれば教えてください。

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

  • ベストアンサー
  • e10go
  • ベストアンサー率38% (47/122)
回答No.4

こんばんわ。 長文になります。 >カレンダーは出来れば1行1週間で5行のものが理想です。 つまり、こういうカレンダーですね。 (行),A列,B列,C列,D列,E列,F列,G列 (1),2006年,1月 (2),日曜日,月曜日,火曜日,水曜日,木曜日,金曜日,土曜日 (3),1,2,3,4,5,6,7 (4),8,9,10,11,12,13,14 (5),15,16,17,18,19,20,21 (6),22,23,24,25,26,27,28 (7),29,30,31,-,-,-,- ( - は、空白) 上のカレンダーの日付の下に、「1班,2班,3班」と出勤日をいれる計算式を使った方法を考えました。 また、西暦と月を変えて使用できるようにしました。 下のような表示になります。 (行),A列,B列,C列,D列,E列,F列,G列 (1),2006年,1月 (2),日曜日,月曜日,火曜日,水曜日,木曜日,金曜日,土曜日 (3),1,2,3,4,5,6,7 (4),-,1班,2班,3班,1班,2班,- (5),8,9,10,11,12,13,14 (6),-,3班,1班,2班,3班,1班,- (7),15,16,17,18,19,20,21 (8),-,2班,3班,1班,2班,3班,- (9),22,23,24,25,26,27,28 (10),-,1班,2班,3班,1班,2班,- (11),29,30,31,-,-,-,- (12),-,3班,1班,-,-,-,- なお、出勤日日数を調整するため、A17~A36に、非出勤日を設定できるようにしています。 つまり、例として、A17に「11」を入れると、「11日」の下は空白になり、次の「12日」の下が「2班」になります。 下に、各セルの設定と、入力を載せました。 表示形式 A1=「0年」,B1=「0月」 入力 A1「2006」(今年の年号を、数値で入れる) B1「1~12」(表示月を、数値で入れる) C1(式を入れる) =WEEKDAY(DATEVALUE($A1&"/"&$B1&"/"&1)) D1(式を入れる)、 =DAY(DATEVALUE($A1&"/"&$B1+IF($B1=12,-1,1)&"/1")-1) A2~G2「日曜日,月曜日~土曜日」(各曜日を入れる) A3(式を入れる) =IF($C1=COLUMN(),1,"") B3~G3(全て選択して、B3に式を入れて、[Ctrl]+[Enter]) =IF($C1=COLUMN(),1,IF($C1<COLUMN(),A3+1,"")) A5,A7,A9(全て選択して、A5に式を入れて、[Ctrl]+[Enter]) =G3+1 B5~G5,B7~G7,B9~G9(全て選択して、B5に式を入れて、[Ctrl]+[Enter]) =A5+1 A11(式を入れる) =IF(G9+1<=$D1,G9+1,"") B11~G11,B13~G13(全て選択して、B11に式を入れて、[Ctrl]+[Enter]) =IF(A11="","",IF(A11+1<=$D1,A11+1,"")) A13(式を入れる) =IF(G11="","",IF(G11+1<=$D1,G11+1,"")) B4~F4,B6~G6,B8~F8,B10~F10,B12~F12,B14~F14(全て選択して、B4に式を入れて、[Ctrl]+[Enter]) =IF(OR(B3="",COUNTIF($A$17:$A$36,B3)),"",IF(COUNTIF($B$2:$F2,"1班")+COUNTIF($A4:A4,"1班")=COUNTIF($B$2:$F2,"3班")+COUNTIF($A4:A4,"3班"),"1班",IF(COUNTIF($B$2:$F2,"2班")+COUNTIF($A4:A4,"2班")=COUNTIF($B$2:F2,"3班")+COUNTIF($A4:A4,"3班"),"2班","3班"))) A16「非出勤日」(入力) C16「出勤日」(入力) B17~E17「1班,2班,3班,計」(入力) B18~D18(全て選択して、B18に式を入れて、[Ctrl]+[Enter]) =COUNTIF($B$4:$F$14,"1班") E18(式を入れる) =SUM(B18:D18)

その他の回答 (3)

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

私も#1さんに同感。 1、2、3班が連日になったりしないような配慮は、普通するものと思いますが、どうするのでしょうか。 逆転の発想で A列のA1:A6にに第1班の1を入れる。 A7:A12に2を入れる A13:A20まで3を入れる。 B列に4桁ぐらい(ダブり数がほとんどないようにするため)の乱数をセットする。 B列でソートする。これでシャッフル代わり。 営業日を割り当てる。 カレンダーと組み合わせを整えるためには難しいが。 休日を含まないカレンダーにして、日付の隣列へ、上記A列を貼り付けてはどうでしょう。(B列に縦に112231・・のように張り付く) A列の書式で「第##班」を設定など。

  • Turbo415
  • ベストアンサー率26% (2631/9774)
回答No.2

やりたいことがイマイチ飲み込めないんですが。 平日に1班、2班、3班と入れるとして、回数指定とはどういう事ですか?たとえにあるようにどこかのセルに6と入れたらどうしたいのでしょうか?この辺が分からないと誰も答えられないと思いますが。 単純に1日が月曜だとして1日から1班、2班、3班、1班、2班と来て翌週の月曜から3班、1班、2班、・・・・となりたとえば6と有ったらどうするのですか?6回目の1班は無しにしてと言うことでしょうか?6という数字はどれか特定の班に対してなのですか?それとも、各班にそれぞれ6回、8回とか入力するのでしょうか? このままでは全くどういう表を自動表示させたいのか不明です。私の理解力不足かもしれませんが・・・ やりたいことから察すると、WEEKDAY関数で曜日を判断、祭日は別に表を作って判断、これでカレンダーは出来ますので、これにやりたいことをIFとかを使ってやるしかないのでしょうけど・・・

otyame
質問者

補足

説明が足りなくて・・・要するに,毎日平日を出勤日で埋める必要はなくて,予算の関係で,各班の月の出勤回数を制限したいのです。 今日が1班なら明日は2班,その次は3班となるのですが,そうすると,月の各班の出勤回数が7回もしくは8回になってしまうので,出来れば6回程度,もしくは5回に抑えたいのです。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

出勤回数は班毎に違うのでしょうか?それともまとめて出勤回数があって3っつの班に振り分けでしょうか? 未出勤日が出る場合、月末が該当でいいのですか? 出勤の順序は1班、2班、3班で順序や開始班の変更はありませんか? またカレンダーは縦1列か横1行で固定でいいのですか? このあたりが分からないと設定はできないと思います。

otyame
質問者

補足

 出勤回数はどの班も同回数です。未出勤日については,出来れば月末に偏らずに任意にばら撒きたいのですが,無理なら月末でもかまいません。  出勤順序はおっしゃるとおり1,2,3班の順です。カレンダーは出来れば1行1週間で5行のものが理想です。

関連するQ&A