• ベストアンサー

エクセルで作成したカレンダーに「当番の名前」を自動的に入力する方法をお

kagakusukiの回答

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

 今仮に、Sheet1のA1セルに、その年の西暦年数、C1セルに月、F1セルに第1日目の当番者名を入力すると、A4セルから下に向かって日にちが順番に自動表示され、各日にちと同じ行のB列にはその日の曜日、C列にはその日の当番者名が自動表示されるものとします。  又、自動表示を行う際の判定のためには、当番者のリストと、土日以外の休日のリストが必要になりますから、それらのリストをSheet2に設けるものとします。  まず、Sheet2のB1セルに項目名として「当番者名」と入力して下さい。  同様に項目名として、 E5セルに「休日の日にち」、 F1セルとF5セルに「夏休み」、 G1セルとG5セルに「冬休み」、 H1セルとH5セルに「春休み」、 E2セルに「開始日」 E3セルに「最終日」 と入力して下さい。  次に、F6セルに次の数式を入力して下さい。 =F$2  次に、F7セルに次の数式を入力して下さい。 =IF(OR(F$2="",F$3="",F6=""),"",IF(F6+1>F$3,"",F6+1))  次に、F6~F7の範囲をコピーして、G6~H7の範囲に貼り付けて下さい。  次に、F7~G7の範囲をコピーして、同じ列の8行目以下に、最も長い休みの日数を上回るのに充分な回数だけ貼り付けて下さい。  次に、B2セルから下方へ向かって、各当番者の名前を、当番を行う順番に入力して下さい。  次にE6セルから下方へ向かって、年間の祝祭日等の、土日以外の休日を 2010/1/1 2010/1/2 2010/1/3 2010/1/11 2010/2/11   ・   ・   ・   ・   ・ 2010/12/23 2010/12/31 という具合に入力して下さい。(順不同も可)  次に、F2セルに夏休みの開始日を、 F3セルに夏休みの最終日を、 G2セルに冬休みの開始日を、 G3セルに冬休みの最終日を、 H2セルに春休みの開始日を、 H3セルに春休みの最終日を 入力して下さい。  次にSheet1を開いて、A1セル、C1セル、F1セルを枠線で囲んで下さい。  次に項目名として、 B1セルに「年」、 D1セルに「月」、 E1セルに「最初の当番者名:」、 A3セルに「日にち」、 B3セルに「曜日」、 C3セルに「当番者名」、 と入力して下さい。  次に、A4セルのセルの書式設定の表示形式を、ユーザー定義の d"日" とし、同じくB4セルのセルの書式設定を aaa として下さい。  次に、A4セルに次の数式を入力して下さい。 =IF(ROWS($3:3)>DAY(DATE($A$1,$C$1+1,)),"",DATE($A$1,$C$1,ROWS($3:3)))  次に、B4セルに次の数式を入力して下さい。 =A4  次に、C4セルに次の数式を入力して下さい。 =IF($A4="","",IF(OR(WEEKDAY($A4,2)>5,COUNTIF(Sheet2!$E:$H,$A4)>0),"【休日】",INDEX(Sheet2!$B:$B,MOD(MATCH($F$1,Sheet2!$B:$B,0)+COUNTIF(C$3:C3,"<>【休日】")-2,COUNTIF(Sheet2!$B:$B,"<>")-1)+2)))  次に、A4~C4の範囲をコピーして、同じ列の5行目~34行目の範囲に貼り付けて下さい。  そして、必ずしも必要ではありませんが、F1セルに最初の当番者名を入力する際に便利になる様に、F1セルの入力規則を「リスト」に設定して、「元の値」欄の中に入力する数式を以下の様にして下さい。 =INDIRECT("Sheet2!B2:B"&COUNTIF(INDIRECT("Sheet2!B:B"),"<>")-1)  以上で準備は完了で、後は Sheet1のA1セルに、その年の西暦年数、C1セルに月、F1セルに第1日目の当番者名を入力すれば、当番表が自動表示されます。  尚、Sheet2の休日のリストは、年が変わる度に更新して下さい。

GAOMONN
質問者

お礼

夏休み、冬休み・・・全然考えておりませんでした。 全部自動ででてくるなんてすごいです。 どうもありがとうございます。 明日会社で試してみます。

関連するQ&A

  • excel 当番表を作る

    excelで当番表を作っています。 カレンダーの中に毎日「お昼当番」と「朝礼当番」を入れています。 「お昼当番」と「朝礼当番」のメンバーは若干違います。 7月  2日 3日 4日 5日 6日  A  B  C  D  E  C  B  A  C  B  9日 10日 11日 12日 13日  F  G  A  B  C  A  C  B  A  C ・・・・ このとき、3日や13日のように同じ人が当番が重なることがありますが これは避けたいと思っています。 いつもこのカレンダーの作成を行う際、 コピペを間違って誰かが途中抜けてしまったり、 同じ人が重なってしまうことを見落とすことがあります。 このようなカレンダーの作成を自動で行う方法はあるでしょうか? 難しいと思いますが、ご助力お願い致します。

  • Excel カレンダー 当番表

    Excelでカレンダー形式で当番表を作成したいです。 平日だけ割り当てて、土日祝はなし。当番はローテーションで、20人ほどいます。 毎月作成しなければならず、できれば簡潔に関数だけで作成したいです。 どなたか、教えてください。。 宜しくお願いします。

  • エクセルで曜日指定のカレンダーを作りたい

    お掃除当番表をExcelで作っています。 当番は火金だけなので、1年間のカレンダーを作りたいのですが、オートフィルでやってもずれてしまいます。 日付を手入力で、曜日をWEEKDAYで表示するくらいしか思いつかないのですが、他に何か便利な方法はありますか?

  • 当番表&当番回数をエクセルで作りたい。

    よろしくお願いいたします。 こちらのソフトのような、 http://www.juno-e.com/excel2/?p=50 この人は何曜日と何曜日入れると指定し、自動的に名前が入る当番表を作りたいのですが、作りたい当番表は、祭日は当番がないので、指定した曜日でも当番が入らないようにしたいですし、月によっては行事で1日や2日、通常当番が入る曜日でも先に当番が入らないようにしたいのですが、こういった事は、こちらのソフトでは不可能でしょうか? エクセルでなんとかこれから長く続く当番表作りを楽にしたいと考えている最中です。

  • 当番表をexcelで作成したい

    トイレ掃除の当番カレンダー表をexcelで作成したいです。 「3日づつ」交代で「8人」で回す~等の決まりで 関数やVBAなどを使って作成したカレンダーに 自動で名前が表示されるようにできないでしょうか? 「」部分は変動する場合があります。 土日祝日は休みです。 1列の物ではなく普通の市販されているような7×6マスのカレンダー表記です。

  • エクセルでカレンダー

    プライベートでエクセルでカレンダーを作り予定表などを入力して使っています。 やり方は 1.1行の各列にに日、月、・・・・土 2行以下は各曜日の下のセルに日にちが入れてあります。 2.各セルは3行分の行高さが取ってあり日にちは上詰め中央に表示し、予定は下2行に入れています。 3.日にちは日曜日、祝日は赤でその他は黒で表示し、予定は青で書き込みます。 4.本日以前の日にちや、予定は毎日紫に変更しています。 質問 自動で4の操作と本日の日付のあるセルを黄色で塗りつぶす様に出来ないでしょうか? そのプログラムを教えていただきたいのです。

  • エクセルを使って当番表を作成したいのですが・・・

     関数を使った当番表があるのですが、改善しようと考えています。現状の当番表を作成したのは私ではなく、エクセルのレベルは決して高くありません。よい方法を教えていただければと思います。 現状・・・一つのシートに1ヶ月単位の当番表を作成しています。そのシートをもとに1日単位の当番表が出力できるように関数VLOOKUPを使用し、別のシートで1日単位の当番表を出力できるようになっています。当番の電話番号一覧のシートがあるのですが、現在1日単位の当番表に手書きで当番の番号を記入しています。  ・使用している関数=VLOOKUP($Y$8,1ヶ月当番表!:$AM$32,23,FALSE)  ※Y8に日にち(1.2.・・・31)を入力するとその日の当番が反映されるようになっています。 希望・・・1日単位の当番表に関数を使って個人の電話番号データが反映されるように改善したいと考えています。  説明が不十分かと思いますが、よろしくお願いします。

  • EXCELでの当番表入力

    地元の育成会で役員を押し付けられました。いやになるほど書類を作らされています。 本当に困っているのが、EXCELで作る当番表です。E列に2021年度の年月日、F列に曜日が入っています。土日祝日と夏休み等の特別休暇の間には当番がありませんのでそういった日付を飛ばして、G列に班番号、H列に名前を自動で入れたいのですが、なんとかならないでしょうか。 班番号と名前の順番はA列とB列に用意しました。当番は70名ほどで来年の3月までループします。 なんとか入力だけでも簡易に済ませたいのですが、お力を貸して下さい。

  • エクセル2003でカレンダーを作成したのですが

    そのカレンダーに、誕生日に該当する人の名前を 出てくるようにしたいのですがどういった関数?計算式?を 使用すればいいのでしょうか。 ひとまず、A1セルに2010/1/1を入力し、下に =IF(MONTH($A$1)<>MONTH($A$1-WEEKDAY($A$1)+COLUMN(F1)+7*(ROW(F1)-1)),"",$A$1-WEEKDAY($A$1)+COLUMN(F1)+7*(ROW(F1)-1)) を入れて、あとはオートフィルでカレンダーを作りました。 別シートに、「名前」「誕生月」「日にち」が入ったデータはあるので、ここから引っ張ってこれるようにしたいのですが・・ 説明が下手で申し訳ありません。 ちなみにエクセルはほぼ初心者です。カレンダーもネットで調べて、やっとこさ作成しました。 別シートのデータを、「月と日付別々じゃなくて12/3みたいに 打ち直して、こういう関数つかってやればいいんじゃない?」 などなど、あればお聞きしたいです。

  • 当番表をエクセルで作りたい

    今現在社内での月ごとの当番表を作っているのですが、曜日に合わせて自動で入力できるようにしたいです。       1  2  3  4  5  6  7  8  9       月 火 水 木 金 土 日 月 火 社員1 A   ○    ○           ○ 社員2 B     ○      ○ 社員3 B     ○      ○ 社員4 A   ○    ○           ○ 横に日にちと曜日、縦に社員の名前とシフト名を並べています。 シフト名がAならば火、木当番。 Bならば水、土が当番という形で○をつけています。 そしてこのシフト名はEまである状況です。 社員数が30名ほどあるし、並び順は年齢順ですので一人ずつ入れると大変です。 客先への出張があって、来月はシフトAからDに当番変更ということがよくあったりします。 なのでこのシフト名を変えれば自動で曜日に合わせて○を入れてくれるようにしたいのです。 いろいろ考えましたが、自分ではどうしてもうまく作れません。 どうかよろしくお願いします。