- 締切済み
Excelで勤務表の勤務記号をランダム作成するには
1 2 3 4 5・・・・ 山田 A A 佐藤 C A 田中 D B 鈴木 B B =IF(D$6="","",IF(COUNTIF($AJ8:$AN8,D$6)>0,"休",SWITCH(RANDBETWEEN(1,5),1,"A",2,"B",3,"C",4,"D",5,"))) この式だと1日に同じ記号がダブったりします。(2の下のように) 上記のような勤務表でランダムに1日A~Dが各1回しか出ないようにしたいのですが、その様にするにはどうすればいいでしょうか? (1の下のように) 説明が分かりにくく申し訳ございません。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- keimori01
- ベストアンサー率74% (69/93)
他の回答者の方の回答を見ていたら、思いついたのでポストしておきますね。8行目から11行目を作業用に使っています。 まず、B8:B11に「=RAND()」と入力し、必要なだけ右にもコピーしておきます。 セルB2に以下の関数を入力します。あとはB3からB5までオートフィル、B2:B5を右へオートフィルすればOKです。 =IFS(RANK.EQ(B8,B$8:B$11)=1,"A", RANK.EQ(B8,B$8:B$11)=2,"B",RANK.EQ(B8,B$8:B$11)=3,"C",TRUE,"D") 考え方としては、乱数を4つ発生させて、それぞれのメンバーに割り当てます(作業用)。それをRANK.EQ関数で順位を求め、IFS関数で1位をA、2位をB、3位をC、残りをDにしました。 なお、セルを編集モードにしてから元に戻すと、乱数が再度計算されるので表示が変わります。
- SI299792
- ベストアンサー率47% (772/1616)
- imogasi
- ベストアンサー率27% (4737/17069)
しばらくの間、回答が出るか、様子を見ていたが、出てない。 この問題は難しいよ。質問者は簡単そうに質問を出しているように見えるが、 そもそも、数学的には、ランダムなものを出して(背後には数学的なプログラム処理が行われているのだが)も、同じもの(文字)が(確率はそれなりに少ないが)4連することも(例 AAAA)あることを、質問者は、わかってないのでは。 それと組み合わせの問題に絡んでくると思うが、4文字ぐらいなら、プログラムで求められる(解説のVBAコードがWEB記事で見つかる)が、数が増えると、すぐ膨大な数になって、手に「おえりゃーせん」ことになる。 ーー 質問例は、簡単にすることが多いし、それでよい場合が多いが、本件では、 (1)担当する見込みの人数は何人いて、 (2)仕事のタイプは何種類か、 (3)一日に重複はあり得ない、 (4)実際は4人の中で休む予定が居たり、この人はこの仕事はしない、などないものとするでOKとか、 などな明言しないと、回答も出しずらいと思うが。 === 私は質問者が、組み合わせを(人知絞って・事情加味して、作り)表にして、それの一組を引っぱってくる、仕組みにする、のがよいのではと思う。 ぐらいがよいのではと思う