• ベストアンサー

エクセル勤務表シフトの自動生成の作り方

お世話になります。 エクセルで勤務表を作り、日にちと曜日の方は月の数字を入力すると自動で変わる様に出来たのですが、シフトの方が月を入力して自動で変わるやり方が分かりません。 シフトはそれぞれ、BBAAで二日休みと言う形です。 宜しくお願いいたします。

noname#130812
noname#130812

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

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

お示しのデータがA1セルに4、C1セルから横に1,2,3・・と日付が、A3セルに田中、A4セルに鈴木、A5セルに和田が入力されて表示のようなシフトになっているとします。仮に4月におけるこのシフトの状態が基本となってその後の月のシフトが作られていくものとします。 初めに参考のために次の式をC8セルに入力して右横方向にオートフィルドラッグします。 =MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6) このデータが各人のシフトの式を考えるうえで参考になります。 田中のケースではC3セルには次の式を入力して右横方向にオートフィルドラッグします。 =IF(C$1="","",IF(OR(MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=1,MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=2),"B",IF(OR(MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=3,MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=4),"A",""))) 鈴木のケースではC4セルに次の式を入力して右横方向にオートフィルドラッグします。 =IF(C$1="","",IF(OR(MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=5,MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=0),"B",IF(OR(MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=1,MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=2),"A",""))) 和田のケースではC5セルに次の式を入力して右横方向にオートフィルドラッグします。 =IF(C$1="","",IF(OR(MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=3,MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=4),"B",IF(OR(MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=5,MOD(DATE(YEAR(TODAY()),$A$1,C$1)-DATE(2011,4,1),6)=0),"A",""))) 他の人のケースでも8行目に示されたMODの値を見ながら条件を設定すればよいでしょう。 これで4月のケースをシフトの元の条件としたときにA1セルに5、や6,7と入力することでその月のシフト表が表示されますね。

noname#130812
質問者

お礼

すみません。 A11セル4、C11セルから横に1.2.3・・・と日付が、A13セルに田中、A14セルに鈴木、A15セルに和田となっています。数式の数字を入れ替えればよいのでしょうか?出来ればご回答宜しくお願いいたします。 そして、大変ありがとうございました。

noname#130812
質問者

補足

御回答ありがとうございます。 早速入力致しオートフィルドラッグした所、各セルに ### と出てまいります。 何か設定が悪いのでしょうか? 教えて頂けたら幸いです。 宜しくお願い致します。

その他の回答 (2)

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

回答No2です。####が表示されるのはセルの幅よりも長い数値が入力されている場合や、または、結果画布になるような日付、時刻を計算している場合ですね。 MOD関数のみが使われていますので問題は無いように思われます。こちらが提案したとおりに新しいシートを使って試験してみてください。

noname#130812
質問者

お礼

大変ご丁寧にありがとうございました。 もう一度チャレンジしてみます。 失礼致します。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

B,B,A,A, , , という周期の初日の日付を【基準日付】とすると、以下の数式でシフトを求められます。 =CHOOSE(MOD(【当該日付】-【基準日付】,6)+1,"B","B","A","A","","") 田中さんの行が行3で、4月2日が列Dだとすると、 セルD4に =CHOOSE(MOD(DATE(2011,A1,E1)-DATE(2011,A1,$D1),6)+1,"B","B","A","A","","") と入力し、右にコピペすると、4月3日以降のシフトが求められます。 シフト表に書いてない過去の日付を使うと、4月1日に =CHOOSE(MOD(DATE(2011,4,C1)-DATE(2011,3,27),6)+1,"B","B","A","A","","") と書いて、右にコピペすると、すべての日付についてシフトを出せます。 人によって、基準日付が異なると思うので、人によって基準日を変えてください。

noname#130812
質問者

お礼

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

関連するQ&A

  • 勤務シフト表の作り方

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

  • エクセルで勤務シフト表の作成。

    エクセル表で年間の勤務シフト表を作成しております。 独自で考えて作っていってるんですが、改良したい点がいくつかあり教えて頂きたい点があります。 現在は色んなデータを入れているシートを一つと、1か月ごとのシフト表を12個用意しています。   まず、4月度のシートに『4月度』と入力したら日付と曜日が自動的に入る様にするにはどのような関数が使えますか? 12枚のシートは全て同じ書式なので、日付と曜日を空白にしておいて、自動的に表示したいのです。 付け加えるなら、日曜と祝日にはフォントもしくはセルに色をつけたいのです。 もう1点。社員ごとに労働時間の累計を出していきたいのですが、現在は表に社員番号を入力すれば氏名が表示されるようにしており、例えばA1のセルの個人の数字を来月度もA1のセルの人と合計する式しか入れていません。 これだと各月の表の社員の並びが変わった時、別の社員の数字を合計してしまいます。 社員番号を入れれば各月の労働時間を合計するにはいかがいたしたらよろしいでしょうか? 長文の上、説明不足があるやも知れませんが宜しくご教授下さい。

  • エクセル勤務表作成中なのですが・・・

    初めて質問します。よろしくお願いします。 エクセル2003にて勤務表を作成しているのですが、こんな事ができるものなのでしょうか?     A    B   C   1 H18年  8月  2  21   月   出勤  3  22   火   出勤  4  23   水   休み   ・   ・   ・ 32  20   日   休み シート1にこの様な表を作り、シート2の1つののセルに休みの日付を自動的に抽出したいのですがこの様なことは可能でしょうか? ちなみにA1,B1には数字のみの入力で表示形式で年月を表しています。A2には=DATE(A$1+1988,B1,21)という関数で日にちを表示、A3以降は=A2+1というようにして表示しています。曜日は=IF(A2="","",WEEKDAY(A2))という関数で表示しています。 私エクセル関数に関してはあまり詳しくありません。この表もフリーソフトで入手したものを使用しています。 よろしくお願い致します。

  • 勤務表作成で困ってます。

    月別、曜日別固定シフト表それぞれ何月(図:8月)入力すると自動で曜日、日付がそれぞれ自動で変更するのですが上手くいきません。異なる勤務表に日付が同じ行を見つけ、そのセルに表示させたいんですが。 index matchも使用したのですが、上手くいきません。 月別シフト表をメインに曜日別固定シフト表へ月変更してもそれに合わせて反映させることできないでしょうか?

  • エクセル表にマクロで・・・

    エクセルの表で日にち又は月を入れると自動的に曜日が入力されるマクロを設定したいのですが、可能ですか?マクロ初心者ですが宜しくお願いします。

  • Excelで勤務表を作っていますが・・・

    Excelで添付のような勤務表を作っています。 1.勤務表は15日締め 2.年:$B$2に書式形式「#"年"」にして「2017」と入力 3.月:$A$4に「11」、$A$20に「12」と入力 4.日:B4~B18に「16~30」、B20~B34に「1~15」と入力 5.曜日:=IF($B4<>"",TEXT(DATE($B$2,$A$10,$B4),"aaa"),"")を   C4に入力し、C34までコピペ 日の入力を手入力で行なっているため2/28、4/30、6/30、9/30、11/30以降の 日を削除してやらないと正しい勤務表が出来ません。 日の入力を手入力ではなく自動的にできる方法をご存知の方、 是非お教え願います。

  • Excelで勤務表

    Excel(2000)で勤務表を作ることになりました。 基本勤務時間が8時間 それ以降が残業時間 例えば8:30から20:00まで働いた場合、 基本に"8" 残業に"2.5"と自動的に入る式を入れたいのですがどうしたらよいでしょう。 また、月を変えるだけで日付、曜日が自動的に変えられる式も教えていただきたいです。 使う関数の説明も付けてもらえると嬉しいです。 宜しくお願いします。

  • エクセルでの勤務表作成

     お世話になっております。エクセルで勤務表(シフト表)を作成しようと思っております。ひとつわからないことがあるので、お教えください。文面では伝えにくいのですが、がんばってみます。  表は野球のスコアボードを想像してください。そこに休みの日は斜線を入れます(□に/を入れます)。その後、野球のスコアボードの得点のところに、その斜線の数(つまり、休みの日の日数)が、自動に計算されるような式を作りたいと思っております。  文面では伝えにくくて、大変、申し訳ございませんが、ご教授よろしくお願い申し上げます。

  • エクセルで作成した勤務表を週間勤務表に抽出したい

    エクセルで作成した勤務表を元にして 週間勤務表(月~日)を作成したいのです。 現状はコピペで作業をしていますが可能であれば シートをファイルに貼り付ける事により自動計算で反映できるようにしたいと思います。 月初めは1日からですが曜日が都度変わるためそのための関数式が 分かりませんでした。 現在の勤務表は B6以降B欄には社員名 セルC3に月    C4に日    C5に曜日    C6以降はその日の勤務シフト(早、遅 等) 週間予定表は  A6以降A欄が社員名  G4が日  G5が曜日(固定)  G6以降がその社員の勤務シフト と表示したいので 19年8月の場合8/1が水曜日なので  I4に「1」  I6に「シフト」  のような表示が可能な関数式を探しております。 宜しくお願い致します。

  • エクセル勤務表作り

    初めて作る為困っています。A列に日にち、B列に曜日が出るようにカレンダーを作りました。 C列に名前を入れています。休みの曜日が固定されているので(例えば月、木とか)何かをすると、自動的に休みの曜日に○がつくという事はできるのでしょうか? 初心者なので教えて下さい

専門家に質問してみよう