質問: 【excel】ランダムで良いのが見つかりません いつもお世話になっております。 エクセルで掃除の当番表を作成したく知識を借りたいです。 9人を毎月ランダムで当番決めしたいです。 図の”●”が当番担当者を示しています。 この”●”をランダムで入れたいのです。 参考にできそうなサイトも見つけられませんでした。 どなたか参考になりそうなサイトや方法わかる方いましたら 宜しくお願い致します。
回答: 大分苦労しましたがやっと出来上がりました。次のようにすればよいでしょう。 毎月ごとに当番を組みなおしている場合には当番に偏りが出ることが考えられますので、また、ランダムなデータはシートにデータなどの入力などの操作が有った場合には組み合わせが変わってしまいます。そこで作業用のシート(シート2)に当番を決めるために必要なデータをランダム操作で並べたのちにそのシートをコピーして値として別のシート(シート3)に貼り付けます。それによってシート上に新たな入力が行われても組み合わせが変わらなくなりますのでその別のシートを元にお求めのシート(シート1)を作成することにします。 シート1ではa1セルに日にちと入力し、b1セルには8月1日からの日付にするのでしたら2012/8/1と入力します。 c1セルには次の式を入力して右横方向にドラッグコピーします。 =if(b1="","",if(month(b1+1)=month($b$1),b1+1,"")) これでその月の月末の日付までが表示されます。 次にb1からaf1セルを選択して右クリックして「セルの書式設定」から「表示形式」の「ユーザー定義」で d"日"とします。これで1日、2日・・のように表示されますね。 a2セルには曜日と入力し、b2セルには次の式を入力して右横方向にドラッグコピーします。 =if(b1="","",text(b1,"aaa")) a3セルから下方には氏名を入力します。必ず入力してから次のシート操作に移ってください。氏名は暫定的な入力で構いません。 シート2ではa1セルには例えば2012/8/1のように日付を入力して右横方向にドラッグします。数か月分を表示するようにしても構いません。 a2セルには次の式を入力して横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =if(row(a1)>counta(sheet1!$a$3:$a$100),"",if(column(a1)=1,if(row(a1)=1,"●",rand()), if(column(a1)0,"",if(offset(a2,0,-1)=max(offset(a$2,0,-1):offset(a$2,100,-1)),"●",rand())),if(column(a1)=counta(sheet1!$a$3:$a$100),if(or(offset(a2,0,-1)="",offset(a2,0,-1)="●"),rand(),"●"), if(mod(column(a1)-1,counta(sheet1!$a$3:$a$98))+1=1,if(offset(a2,0,-1)=max(offset(a$2,0,-1):offset(a$2,100,-1)),"●",rand()),if(mod(column(a1)-1,counta(sheet1!$a$3:$a$100))+10,"",if(and(offset(a2,0,-1)<>"",offset(a2,0,-1)=max(offset(a$2,0,-1):offset(a$2,100,-1))),"●",rand())),if(mod(column(a1)-1,counta(sheet1!$a$3:$a$100))+1=counta(sheet1!$a$3:$a$100),if(or(offset(a2,0,-1)="",offset(a2,0,-1)="●"),rand(),"●")))))))) その後にシート2全体を選択して「コピー」し、次にシート3を選択します。シート3のa1セルを選択したのちに「形式を選択して貼り付け」から「値」にチェックをして貼り付けます。 これによてランダムな配置が変化することのないシートが完成します。このシートを元にシート1の表を次の操作によって完成します。 シート1のb3セルには次の式を入力して右横方向にドラッグコピーしたのちに下方向にもドラッグコピーします。 =if(or(b$1="",$a3=""),"",if(index(sheet3!$a$2:$xx$100,row(a1),match(b$1,sheet3!$1:$1,0))="●","●","")) シート3の1行目に表示されている日付に基づいた組み合わせが表示されることになります。 同じ組み合わせのままで良ければ、シート3にシート1に合致する日付が無くともシート3の1行目の日付を手動で変えることによって対応することができます。