質問: エクセルで作成したカレンダーに「当番の名前」を自動的に入力する方法をお エクセルで作成したカレンダーに「当番の名前」を自動的に入力する方法をおしえてください。 毎月エクセルで朝礼当番表を作っています。 土、日、祝がお休みです。 たとえば、1日に最初の人の名前を入力すると休みの日はぬかして、 順番に当番が入力されるという関数があれば教えてください。 1行目に「日にち」 2行目に「曜日」 3行目に「当番者名」 と簡単な表です。 リストからコピペしたら間違えてしまいました。 オートフィルで入力しようかと思ったのですが、休みの日を抜かすのが面倒で。 よろしくお願いします。
回答: こんばんは! 外していたらごめんなさい。 こういうことで良いのですかね? ↓の画像でc4セルにその月の1日の担当者を入力すると、f・g列に作成している表の順に土日・祝日を除いた日に 順番にc4セルに入力した人から繰り返して表示するようにしてみました。 尚、c5セルに入力しないのは、1日が土日・祝日の可能性があるので敢えて別セルに入力するようにしています。 準備段階として、↓の画像では右側がsheet2でそこに祝日データを作っておきます。 そして、日付に関してはシリアル値の方が都合がよいのでシリアル値にし、表示形式だけを変えています。 sheet1の1行目に年・月度を入力するセルを設けています。 a5セル(セルの表示形式はユーザー定義から d としておきます)は =if(month(date($a$1,$c$1,row(a1)))=$c$1,date($a$1,$c$1,row(a1)),"") b5セル(セルの表示形式はユーザー定義から aaa としておきます)は =if(a5="","",a5) c5セルに =if(d5="","",index($g$5:$g$14,if(mod(d5,counta($g$5:$g$14))=0,counta($g$5:$g$14),mod(d5,counta($g$5:$g$14))))) 作業列d4セルに =if(c4="","",index(f5:f8,match(c4,g5:g8,0))) d5セルに =if(or($c$4="",a5="",weekday(a5)=1,weekday(a5)=7,countif(祝日,a5)),"",$d$4+count($d$4:d4)-1) として最後にa5~d5セルを範囲指定し、d5セルのフィルハンドルで31日の35行目までコピーすると 画像のような感じになります。 これでf・g列の担当者の人数に変更があっても対応できると思います。 (b列のセルの色は条件付書式で設定しています。) 以上、長々と失礼しました。 参考になればよいのですが 的外れならごめんなさいね。m(__)m