• ベストアンサー

勤務シフト表の作り方

月を変えると曜日が変わる様にしているのですが、 同じく月を変えると、シフトが変わる様にしたいのですが 解かりません。 ご解答いただければ大変有り難いです。 シフトそれぞれ、BBAAとなっています。 宜しくお願いいたします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

回答No2,3,4です。 日曜日のセルを赤色にするのでしたらC9セルからAG9セルの範囲を選択してから「条件付き書式」の設定で「数式を・・」を選択し、数式の窓には次の式を入力します。その後に同じ画面の「書式」をクリックし、「塗りつぶし」のタブから赤色を指定してOKします。 =WEEKDAY(DATE($A5,$A8,C8))=1 曜日を調べるにはWEEKDAY関数を使います。1が日で、2が月、3が火・・のようになります。

noname#130812
質問者

お礼

シフト表は全て完成致しました。 他の回答者さんからは、質問の仕方が悪いと指摘されましたが、 訳の解からない質問に対し度々ご丁寧にお答え頂いて、心から感謝 致します。 本当に有難う御座いました。 ☆KURUMITO様にいつも平和があり、  実り多き素敵な毎日でありますように。 失礼致します。

その他の回答 (6)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

C9セルからAG9セルを範囲として選択したのちに条件付き書式の設定で、数式の窓には次の式でもよいですね。 =C9="日"

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 将来、シフトの繰り返しが6日周期ではなくなる事も考えて、御質問の表とは僅かに形式を変更して、適当なセル(例えばE5セル)にシフトの周期を 6 と入力する事にします。  又、以下の方法は、途中で名前の順番が変わったり、辞める人間がいたり、新人が入って来た場合でも対応しています。  まず、F5セルに「日周期」と入力して下さい。  次に、A8:A9、A10:B10、A11:B11、A12:B12、A13:B13、A14:B14を、それぞれ結合して下さい。  次に、A8セルの書式設定を[ユーザー定義]の 0"月" として下さい。  次に、C8~AG8セルの書式設定を[ユーザー定義]の d として下さい。  次に、A8~A13セルに各勤務者の名前を、A14セルに「備考」と入力して下さい。  次に、C8セルに次の数式を入力して下さい。 =IF(ISNUMBER(($A$5+($A$8>$A8)&"/"&$A8&"/"&COLUMNS($C:C))+0),DATE($A$5+($A$8>$A8),$A8,COLUMNS($C:C)),"")  次に、C9セルに次の数式を入力して下さい。 =TEXT(C8,"aaa")  次に、C10セルに次の数式を入力して下さい。 =IF(ISNUMBER($E$5),IF(AND($A10<>"",$E$5>1,INT($E$5)=$E$5,ISNUMBER(($A$5+(VLOOKUP(9^9,$A$8:$A10,1)<$A$8)&"/"&VLOOKUP(9^9,$A$8:$A10,1)&"/"&COLUMNS($C:C))+0),OR(COUNTIF($A$8:$A10,$A10)>1,COUNTIF($A10:B10,"><")>1)),VLOOKUP($A10,INDEX($A:$A,MATCH(MONTH(VLOOKUP(9^9,C$8:C9,1)-$E$5),$A:$A,0)):$AG10,DAY(VLOOKUP(9^9,C$8:C9,1)-$E$5)+COLUMNS($A:$B),0)&"",""),"")  次に、C10セルをコピーして、C11~C13の範囲に貼り付けて下さい。  次に、C8~C14の範囲をコピーして、D8~AG14の範囲に貼り付けて下さい。  次に、A8~AG14の範囲に枠線の設定をして下さい。  次に、AE8セルにカーソルを合わせて、マウスの左ボタンを押しっ放しにし、そのままカーソルをAG14セルまで移動させてから、ボタンを放して下さい。  その状態で、次の条件付き書式を設定して下さい。 数式 =ISERROR(($A$5+(VLOOKUP(9^9,$A$8:$A8,1)<$A$8)&"/"&VLOOKUP(9^9,$A$8:$A8,1)&"/"&COLUMNS($C:AE))+0) 書式:[罫線]タグにおいて、[なし]ボタンをクリック  次に、A8~AG14の範囲をコピーして、A17~AG23の範囲に貼り付けて下さい。  次に、A17セルに次の数式を入力して下さい。 =IF(ISNUMBER(("1904/"&VLOOKUP(9^9,$A$8:$A16,1)&"/1")+0),MONTH(DATE(1904,VLOOKUP(9^9,$A$8:$A16,1)+1,1)),"")  次に、A17~AG25の範囲をコピーして、同じ列の26行目以下に、10回貼り付けて下さい。  次に、E5セルに 6 と入力して下さい。  次に、A5セルに 2011 と入力して下さい。  次に、A8セルに 4 と入力して下さい。  次に、C10~H13の数式を一旦消去し、4月1日~4月6日の、各勤務者のシフトをキーボード入力して下さい。  すると、一年間のシフトが表示されます。  なお、途中で新人が入る場合には、勤務者の名前とシフトが表示されている行の中から適当な行をコピーして、新人が初めて入る月以降の表中に、[コピーしたセルの挿入]を使用して挿入し、名前を書き換えてた上で、その行における、新人が初めてシフトに入る6日間の部分の数式を削除し、替わりにその6日間のシフトをキーボード入力して下さい。  例えば、この回答の添付画像では、6月15日から佐々木さんがシフトに加わるため、6月からの表において、月の行数が1行増えるとともに、名前を「あいうえお順」に整理し直しています。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

C9セルへの入力の式が抜けていました。次のような式になります。 =IF(C8="","",TEXT(DATE($A$5,$A$8,COLUMN(A1)),"aaa"))

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No2です。 =MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6) A8セルが4の時はC25セルは0ですね。C25には上の式を入力してからC25セルを選択してセルの右下隅にカーソルを移しますとポインタの形が+になりますので左ボタンを押しながら右横方向にドラッグするのですよ。もちろん式からわかるようにA5セルに西暦年、A8には月がC8から右横のセルには日付が入力されていることが必要です。 ついでに示しますが、C8には次の式を入力して右横方向にオートフィルドラッグします。 =IF(MONTH(DATE($A$5,$A$8,COLUMN(A1)))<>$A$8,"",TEXT(DATE($A$5,$A$8,COLUMN(A1)),"d")) これで指定の月の末日までが表示されます。上の式では7行目の式は必要としません。 C9セルには次の式を入力して右横方向にオートフィルドラッグします。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

別のところでお答えしていますが次のようです。 前回のご質問にお答えした内容を十分にご理解できなかったことは残念に思います。 お示しの表のとおりのセル番号でお答えします。 田中、鈴木、和田などのシフトを考えるにあたってMOD関数を使うことが重要でそれをまず理解することです。 そのためにC25セルには次の式を入力して右横方向にオートフィルドラッグしてみてください。この操作は理解をしやすくするために行うもので実際には入力して表示させる必要もありません。 =MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6) ここではもちろん表の上での日付は既に入力されていることが必要です。また、シフト表の基準となるのはこの場合には2011年4月のシフト表を基としています。2011年4月1日からカレンダーの日付を引いた値を6で割った時の余りの数が表示されます。0から5までの数が繰り返して表示されますね。この関係は月が変わっても引き継がれるものです。 そこで田中の場合にBがあるのはMODの値が1と2であること、また、Aがあるのは3と4の場合であることがわかります。鈴木の場合も和田の場合も同様にMODの値との関係を把握することが必要です。 そこで答えとなる式ですが、C10セルには次の式を入力して右横方向にオートフィルドラッグします。 =IF(C$8="","",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=1,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=2),"B",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=3,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=4),"A",""))) C11セルには次の式を入力して右横方向にオートフィルドラッグします。 =IF(C$8="","",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=5,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=0),"B",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=1,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=2),"A",""))) C12セルには次の式を入力して右横方向にオートフィルドラッグします。 =IF(C$8="","",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=3,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=4),"B",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=5,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=0),"A",""))) C13セルには和田と井上は同じパターンですから上の式と同じになりますね。 別の月でも同じような式を入力すればよいでしょう。例えばC20セルには次の式を入力します。 =IF(C$8="","",IF(OR(MOD(DATE($A$5,$A$18,C$18)-DATE(2011,4,1),6)=1,MOD(DATE($A$5,$A$18,C$18)-DATE(2011,4,1),6)=2),"B",IF(OR(MOD(DATE($A$5,$A$18,C$18)-DATE(2011,4,1),6)=3,MOD(DATE($A$5,$A$18,C$18)-DATE(2011,4,1),6)=4),"A",""))) 投稿日時 - 2011-04-13 07:44:27 .

noname#130812
質問者

補足

何度もご回答大変ありがとうございました。 いちから作り直して、ご回答頂いた通り入力して出来上がりました。 本当にありがとうございました。 ついでと言ってはなんなんですが、日曜日だけ色をつけたいのですが 各サイトを探してやってみても、これまた上手くいきません。 お時間がある時にでも、ご回答頂けると幸いです。 すみません。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

それだけの情報では無理。 ですが、曜日なら次の関数式を入力すれば可能です。  =TEXT(DATE(年,月,日),"aaa") 年、月、日にはそれぞれ対応する数値を参照させる。  A1セルに年  B1セルに月  B2セルから横方向に日 を示す数値が入力されているなら  =TEXT(DATE(A1,B1,B2),"aaa") で、数値が示す日付の曜日が漢字一文字で表示されます。  ※ TEXT関数と、DATE関数の詳細は Excel のヘルプを参照してください。詳しく書いてありますよ。 残念ですが、あとは職場で Excel の扱いに慣れている人に相談しましょう。 でないと文面を見る限りここでの解決は無理だろうと思います。

noname#130812
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

専門家に質問してみよう