エクセルのVBAについて質問です やりたいこと 1週間(5日間)で10人のうち5人は洗濯当番、残りの5人から掃除当番をランダムで決めたいです

ベストアンサー

0

ありがとうございます もしよろしければそれぞれのコードの解説していただけますでしょうか 上手くは動くのですが、素人なのでそれぞれ書いていただいたコードの意味が理解できておらず・・・

その他の回答(1件)

0

最大回数が何を指しているのかよくわかんないです。 最大回数ってあるけど1がはいるのだけど?1が最大? またランダム回数も100となかなか多いです。 重複者を外すためかと思いますが、 それでも運が悪いとずっと重複しつづけますので、100超えたらあかんし、 何より効率が悪いかと。 それよりも 参加者のリストを作って、選ばれたらその人をリストから引いていくってすると、今回10人なので 10→9→8→7→6→5→4→3→2→1→0 と何度もランダムで繰り返さなくなるので、 シンプルだし一応処理も早くなります。 概要は以下の手順 ①Collectionで、メンバーリスト作って Dim membersList As Collection add でメンバーを追加します。 ②メンバーリストをコピーします。(削除していくのでメンバーリストのマスターは残すため) Dim membersList As Collection Set copyMemberList = CopyList(member) ③ランダムで、メンバーリストの人数分の乱数を生成して Dim rndMember As Integer rndMember = Int(Rnd * copyMemberList .Count + 1) ④一人選びます membersList (rndMember) ⑤お仕事(お掃除か洗濯)に割り振って お仕事=copyMemberList (rndMember) ⑥その人をメンバーリストから削除します。 copyMemberList .Remove rndMember ③~⑥を繰り返す 繰り返すのはmembersList.Count でメンバー数だします。