- ベストアンサー
抽選をおこない
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sub try() With Range("A2", Cells(Rows.Count, 1).End(xlUp)).Offset(, 1) .Formula = "=Rand()" .Value = .Value End With End Sub 一例になれば。
その他の回答 (2)
- jin34
- ベストアンサー率80% (17/21)
RAND関数はセルに何か入力するごとに反応して戻り値を変えてしまうところが曲者だと思います。 自分ならRAND関数で値を取得してそれをセルに入れるマクロを使うかな。 セルA2以下に応募者の番号が入っていると仮定して、以下のマクロを実行。 Sub test() Dim i As Integer Dim myrnd As Double For i = 2 To Range("A65536").End(xlUp).Row Do While Range("B" & i) = "" myrnd = Rnd If WorksheetFunction.CountIf(Columns(2), myrnd) = 0 Then Cells(i, 2).Value = myrnd Exit Do End If Loop Next i End Sub
お礼
お礼遅くなり大変失礼しました。 できました!! ありがとうございました。 マクロを勉強しておりますが、なかなか身につきません。
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばA1セルに応募者数の文字が有り、B1セルにその数を50などと入力します。 A2セルには応募者番号、B2セルには乱数の文字が有るとします。 A3セルから下方に1からの番号を付けるとしてA3セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>B$1,"",ROW(A1)) B3セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>B$1,"",RAND()) C2セルには当選者と文字を入力し、下方には20名の応募者番号を表示させることにします。 C3セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>MIN(B$1,20),"",INDEX(A$3:A$1000,MATCH(SMALL(B$3:B$1000,ROW(A1)),B$3:B$1000,0)))
お礼
マクロを使わなくてもできのですね。 関数なら私にも何とか理解できます。 ありがとうございました。
お礼
短い構文でわかりやすく、行おうとすることができました。 おれいおそくなりごめんなさい 使わせていただきます。