重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

例えば応募者5人が1から5の札を持っていて、3人が当選する仕組みを作る場合、次のようなやり方を考えました。
     A B
1   =rand() =rank(A1,$A$1:$A$5)
2 =rand() =rank(A2,$A$1:$A$5)
3 =rand() =rank(A3,$A$1:$A$5)
4 =rand() =rank(A4,$A$1:$A$5)
5 =rand() =rank(A5,$A$1:$A$5)
それで、B列の上から3人が当選というやり方です。

問題は2つあります。
1つめは、応募数が、200人であったり、160人であったり、その都度違うということ。
(当選者数については、上から当選者数だけ選ぶので気にしません。)
2つめは、ぼくが使うんじゃなくて、Excelに数式を入れたりすることができない人が使うということ。

そこで、使う人が、あるセルに応募者数を入れると、1から応募者数までの数字がランダムに並ぶようにしたいのです。

上記のやり方が、回りくどくて、もっといいやり方があるなら、そうしていただいてかまいません。
上記のやり方にこだわってはいません。

よろしくお願いします。

質問者からの補足コメント

  • A1セルの =rand() が右にずれてしまいました。
    A列とB列の間がくっついてしまいました。

      補足日時:2018/07/17 21:22

A 回答 (2件)

1.式 =IF(ROW()>D$2,"",RAND()) を入力したセル A1 を下方に(セル A200 まで)ズズーッとオートフィル


2.式 =IF(ROW()>3,"",RANK.EQ(A1,A$1:A$200)) を入力したセル B1 を下2行にオートフィル
3.セル D2 に応募人数(最大値は 200)を入力
「Excelで、抽選する仕組みを作りたい」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとうございました。助かりました。
ここ何年かExcelで数式を入力することがなかったもので、
IF関数を使えばよいことをすっかり忘れていました。
それと、RANK.EQという関数があること、知りませんでした。
とても勉強になりました。

お礼日時:2018/07/18 07:57

[No.1]を少し補正しておきます。



ステップ2において、
「セル B1 を下2行にオートフィル」としたのは、
「セル B1 を好きなだけ下方に(最大セル B200 まで)オートフィル」に変更

当選人数を5に変更したければ、式中の「ROW()>3」を「ROW()>5」に変更するだけ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!