Excelで当番表を作成する方法と問題点

このQ&Aのポイント
  • Excelを使用して当番表を作成する際に、特定の月において初日の担当番号が指定した者ではなく次の者から始まってしまう問題が発生しています。この問題は、1月と10月のみで起きるものであり、月の始めが第一日曜日という共通点があることが原因と考えられます。
  • 当番表の作成には、平日のみをローテーション化する必要があり、土日祝日は手入力で行っています。また、祝日は別シートで「祝日」という名前で設定し、担当者のメンバー変更は頻繁に起こるため、毎月シート上で変更しています。さらに、条件付き書式を使用して、該当しない日程を非表示にし、入力すべきセルを黄色に表示するようにしています。
  • 問題の解決策として、1月と10月において初日担当番号が正しく指定されるように修正する必要があります。また、A5セルの式についても理解する必要があります。なお、1月と10月以外の月では問題なく動作しているため、その部分の修正が優先的に行われるべきです。
回答を見る
  • ベストアンサー

Excelで当番表を作成したい

Excel2019使用 初心者です。 ネット上にある様々な回答を参考にし作成していますが、1つ問題が起きたのでご回答いただけますと幸いです。 現在、平日のみをローテーション化した当番表を作成しています。(ファイル添付) ・土日祝は月によって順番がバラバラなので手入力です。 ・祝日は別シートで「祝日」という名前で設定しています。 ・I11:J11のテーブルは「担当者表」という名前をつけています ・セルJ4~ 担当者のメンバー変更は頻繁に起こるため、毎月シート上で変更しています。 ・初日担当番号は手入力です。 ・条件付き書式で、その月に該当しない日程は表示しないように、また入力すべきセルが黄色に色がつくようにしています。 ・A4=N3-(N5-1) ・B4=A4+1 ・A5=IFS(MONTH(A4)<>$K$1,"",WORKDAY(A4-1,1,祝日)=A4,INDEX(担当者表[氏名],MOD(NETWORKDAYS($A$4-1,A4,祝日)+$N$1-$N$5,$N$6)+1),TRUE,"") 問題は、「1月と10月のみ、初日担当番号に指定した者ではなくその次の者から始まってしまう」ということです。要するに、1番(あさん)を指定しているにも関わらず、2番(いさん)から始まります。 1月と10月以外は問題なく動きます。 ズレてしまう二つの月は、月の始めが第一日曜日という共通点があり、それが理由ではないかと思うのですが…。 また、A5セルの+$N$1-$N$5,$N$6)部分が理解できていませんが、間違っていたとしても1月10月以外は正しく動くのでどうしたら良いのかが分かりません…。 ここまで読んでくださってありがとうございます。 不足している情報もあるかと存じますが、ご教示下さい。

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8005/17110)
回答No.1

・A5=IFS(MONTH(A4)<>$K$1,"",WORKDAY(A4-1,1,祝日)=A4,INDEX(担当者表[氏名],MOD(NETWORKDAYS( $N$3,A4,祝日)+$N$1-2 ,$N$6)+1),TRUE,"") としたらどうでしょう?

mrk715
質問者

補足

回答ありがとうございます。 できました…!!!ずっともやもやしていたので嬉しいです。 NETWORKDAYSの開始日指定が間違っていたのですね。 今後の勉強のため、可能であれば、$N$1-$N$5が$N$1-2になると正常に動く理由を教えて頂ければ幸いです…。

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8005/17110)
回答No.2

NETWORKDAYS($N$3,A4,祝日)で開始日から当日までの稼働日が何日かがわかります。 もし当日が1日であって休日でなければ稼働日は1のはずです。これに+$N$1-2とすることで初日担当番号-1の値が出てきます。これを担当者数$N$6(例えば9)で割った余りを出せば0から8までの数値が得られ+1することで1から9までの数値になります。これがちょうど担当者表の何行目に当たるかという数値になります。

mrk715
質問者

お礼

御礼が遅くなり申し訳ありませんでした。 補足への回答までとてもとても参考になりました! ありがとうございました。

関連するQ&A

  • Excelにて当番表の作成をしたい

    以下の条件の当番表の作成をしたいと思っております。 他質問の回答等拝見いたしましたが、条件が合わず質問させて頂きます。 条件 ①A~Hの計8名でランダムに担当となる ②毎日1名が担当する(3ヶ月分をまとめて作成しています) ③連続しないよう、3日以上間を空ける ④個人に確認した担当不可日を設定する ⑤平日、土、日祝でそれぞれの担当最小数・最大数を設定したい(回数は一律ではなく個人個人で変わる) ⑥順番に割り当てる必要はなく、ランダムでも問題ありません なお、シフト表のように遅番・早番等はないのでそのような設定は不要です。 祝日一覧シートは作成済みです。 よろしくお願い申し上げます。

  • エクセル関数で参照する表を条件により可変する

    お世話になります。 エクセルで有給管理表を作っており、関数で参照する祝日の表の列を年により変えたいのですが、どうしても解決できずに相談します。 祝日シートを作り、a1に2019/1/1、b1に2020/1/1、a2:a30に2019年の祝日、b2:b30に2020年の祝日を入力しており、c列以降に来年以降の祝日を入力していく予定です。 複数の職員シートのa4に2019/1/1、b4に2019/2/1などと横に一年分入力していますが、a4の日付は入職日によって年月がバラバラです。 具体的にはa3セルに (NETWORKDAYS.INTL(a4,EOMONTH(a4,0),"0111110",祝日シート!$a2:$a30)) と入力していますが、最後の「祝日シート!$a2:$a30」の部分を年が変わると自動でひとつ右の列に移動できないかと思っています。 offsetやmatch関数を使ってみたのですが、任意の列を返す事が出来ず相談させてください。 よろしくお願いします。

  • エクセルでスケジュール表作成

    いつもお世話になっています。 エクセル(オフィスXP使用)でスケジュール表を作成しています。 日付は一番初めのセルに日付を入力すると自動的に日数が入力されるよう計算式を(隣のセル+1)で作成しています。1Pに月曜始まりで2週間分の日数が入っています。曜日は固定なのでWEEKDAY関数は使っていません。(直接曜日を入力しています)土日は網掛けをしています。 以上のスケジュール表で、自動的に祝日を判別し、セルの色を変えたいのですが方法はありますか?出来れば祝日の曜日欄には自動的に祝日と入るようにしたいのですが・・・。条件付書式などを組み合わせてなんとか1ヶ所入力すると全て自動で行えるように出来ないでしょうか?どの関数を組み合わせればよいか、もしくは別の方法(シートを別に作成し、祝日だけを入力すると、スケジュールのシートが自動的に変わったり・・・)など、ありましたら教えていただけると助かります。 宜しくお願いします。

  • Excelで月間予定表を作成したのですが。。。困っています(>_<)

    ヘルパーさんの月間予定表を作成しました。 全体予定表シートにすべての予定を入力し、 別シートで担当者別、もしくは同一シートで担当者別に予定表を表示できないものかと。。 担当者別で配布が必要なため。。。 全体予定表シートの作りは、 カレンダータイプ(日始まり土曜日)で、 A5~C5(結合セル)→曜日(日曜日) A7~C7(結合セル)→日付(1日) A8~A20行先(リスト選択・別のマスタシート参照)  B8~B20→時間(手入力) C8~C20→担当(リスト選択・別のマスタシート参照) ↑上記が1日分とみなし、予定が12回分まで入力できる形で作成し、横に7日分、下に5日分 合計35日分で1ヶ月分の月間予定表です。 何か方法があれば、教えてください。 よろしくお願いいたしますm(__)。

  • エクセルで表をつくりたい。

     現在、仕事でエクセルをつかった表をつくりたいと思っています。 具体的には、シート1のA1のセルに数字の1を入力したらシート2と3のA1のセルに「野球」という文字をシート1のA1のセルに2を入力したらシート2と3のセルA1に「サッカー」・・・といった具合にシート1のA1に入力された番号によって変えていきたいのですが方法がわかりません。 どなたか詳しくお願いします。

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

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

  • エクセル 表の作成

    エクセルが上手く活用できず困っています。 良い方法があれば教えてください。 過去に作ったたデータで以下の様な表がシート1にあります。 Aにはクライアント名 Bは、担当者名 Cは、数量 Dは、金額が入力されています。 【1月】 ○○社  A中 3m \10000 ○×社 T木 10m \50000 : 【2月】  △△社  B野 3m \10000     ○○社  C中  1m \1000 :    : : 【3月】   :   :   : 【12月】 これらのデータを元に、シート2に… クライアント名を入力すると過去のデータが表示されるような データを作りたいと思っています。 例:(○○社)と入力すると…           1月  A中  3m  \10000 2月  c中   1m  \1000 この様な表を作る事は可能なのでしょうか? 分かりにくい説明ですみません。どなたかいい案がありましたら 教えてください、 よろしくお願いいたします。

  • また教えてください!Excelで作った表で・・・

    助けてください!!  Excelで作った3つの表があります。 ※1つのファイルの中に3つのシートとして作られています。 (1)元となるデータが入っているもので、  (例) 1月1日 1,000    1月2日  500   ~    2月1日 1,500    2月2日 1,800 …と、連続した日にちと数値が入力されています。(数年分) (2) (1)の表から部分的にリンクさせて1カ月分を抜粋しています。  (例) 1月1日 =(1)!A1     1月2日 =(1)!A2 1月3日 =(1)!A3 ←多少違うかもしれませんが、こんな感じの式?を入れてデータを引っ張ってきています。 (3) (2)と同じですが、(2)に抜粋したデータの次月分が入力されています。  (例) 2月1日 =(1)!A32     2月2日 =(1)!A33 2月3日 =(1)!A34    (2)と(3)は1つ1つのデータは違うものの、表の作りとしては同じです。 (2)や(3)のような表が、すでに何カ月先の分まで それぞれシートとして作られているのですが、 その表の内容が正しいか確認したいのです。 例えば、2月のデータを表(1)から引っ張ってきたいのに  (例) 2月1日 =(1)!A32→“(1)!A31”になっている…など 違うセルが入力されていないようにしたいのです。   それで、考えたのは すでに終わった月の表は正しい式が入っているのだから、 正しい表と新しい表を比べられないか?という事です。 (回りくどくてスミマセンm(__)m) でも、引っ張ってくる元のセルが違っているので 単純に比較できず、関数にも詳しくないので、どうしたらいいのか分かりません。 間違えないように、初めからもう一度作る・・・というのはナシで、比較をして確認したい場合でお願いします。 また、比較ではなく、他に方法がありましたら教えてください。 不明な点は補足をさせていただきますので、よろしくお願いします。

  • エクセルの表で・・・。

    AのシートのセルにA1:98と入力するとBのシートに 自動的に金額のA:1(¥4100)と自動的に入力される ような表を作りたいのですが分かる方がいたら分かりやすく 教えてください!!!         ランク         金額         A1:98     A1: \4,100         A2:104    A2: \4,400         A3:110    A3: \4,600         A4:118    A4: \5,000

  • エクセルでの表の作り方2

     エクセルでの表について質問があります。 シート1のA1、A2・・・・A7というセルに「する」もしくは「しない]を入力してシート2のA1、A2・・・・A7のセルに「する」のみの人を上詰めで表示したいのですが方法がわかりません。 例 シート1   山田 する   伊藤 しない   上田 する ↑このように入力すると シート2ではこのように表示するようにしたいのです。   山田   上田     条件つき書式をつかえばAのみの人を表示できるとはおもうのですがその場合上詰めはできないので・・・・

専門家に質問してみよう