プロが教えるわが家の防犯対策術!

エクセルのランダム抽出に付いて教えてください。

A列に1000人の名前が並んでいます。
これをB列に5~8名程度をランダムに表示させるやり方が
知りたいです。

できたらボタンをつけてそれを押すたびにB列の表示が
ランダムに変わるやり方がわかると大変助かります。

もしごぞんじのかたがおりましたらぜひともご教授
くださいませm(__)m

A 回答 (3件)

ん~、


・どの程度のことをなさりたいのか
・どの程度のスキルをお持ちなのか
判らなかったので静観していたのですが、
なかなか回答がつかないようですし、
コーディング技術に関するご質問でもないようなので、
とりあえずご参考まで。
-----------------------------------------
●まずは素朴に関数で。

B1セルを

 =INDEX($A$1:$A$1000,INT(RAND()*1000)+1)

として必要な人数分下方にフィルすれば、一応結果はでます。
F9キーを押せば再抽出されます。

※1
 他のセルに何か入力した場合もその都度再抽出されるので、
 抽出した名前を用いてなんらかの処理する場合には、
 コピー>値貼り付けで確定する必要があります。

※2
 それぞれ個別に選んでいるだけなので、
 同じ名前が重複して選ばれる可能性があります。
 まぁ、対象データは名前ですし、5人程度であれば、
 目視で確認して再抽出すれば良いかもしれませんが…。

※3
 ボタンをクリックして再抽出、というのは、
 VBAを使わなければ基本的にできません。
-----------------------------------------
●VBAで

・値として抽出
・重複がないように抽出
・ボタンをクリックして再抽出
するためには、やはり、VBAでプログラミングしたマクロを、
コマンドボタン等に登録することになります。

以下、あくまでサンプルですが…。

動作の概要
 A1:A1000の範囲から
 5つをランダムに抽出して、
 B列1行目から表示する。
'-----------------↓ ココカラ ↓-----------------
Sub Sample()
 Dim 抽出結果() As Integer

 Set 抽出範囲 = Range("A1:A1000")
 抽出数 = 5
 結果列 = "B"

 ReDim 抽出結果(抽出数)
 For i = 1 To 抽出数
  Do
   抽出結果(i) = Int(Rnd * 抽出範囲.Rows.Count + 1)
   If i = 1 Then Exit Do
   f = True
   For j = 1 To i - 1
    If 抽出結果(i) = 抽出結果(j) Then f = False
   Next j
  Loop Until f
  Cells(i, 結果列) = 抽出範囲(抽出結果(i))
 Next i
End Sub
'-----------------↑ ココマデ ↑-----------------

選んだものが、既に選んでいるものと重複するか否かを、
その都度総当りでチェックして、重複する場合は選び直しています。
抜き出す数が多くなると賢い方法とは言えませんが…。

以上ご参考まで。
    • good
    • 0
この回答へのお礼

deus_ex_machinaさんありがとうございます。

1日にご回答いただいていたのに、gooからの「新しい回答が投稿されました」を
見落としていました(汗)

本日のassault852さんの投稿のお知らせで気が付きました。

●まずは素朴に関数で。 こちらでやりたいことができました。
ボタンを使ってとなるとVBAのスキルが必要みたいで、私には
だるまさんです(手も足も出ない)

というとことで関数のやり方を活用させていただきます。


VBAのほうも勉強して試してみたいと思います。

アドバイスいただいた皆さんに感謝いたします m(__)m

お礼日時:2008/03/08 00:32

>やっぱり私のやりたいやり方はVBAのスキルとかが必要なんでしょうか


もちろんです。
そういう意味では#2の回答が適切でしょう。
お勉強するつもりがなければ、あまり複雑なことは望まない方がよろしいと思います。
    • good
    • 0

VBAの書き方をお尋ねなのでしょうか。

    • good
    • 0
この回答へのお礼

教えて!gooからのメールを見逃していました(汗)

ご回答ありがとうございます。
>VBAの書き方をお尋ねなのでしょうか。

やっぱり私のやりたいやり方はVBAのスキルとかが
必要なんでしょうか?

ほとんどVBAはわからないのですが・・・・

なにか簡単にできるソフトとかがあると便利なんですが・・・・

m(__)m

お礼日時:2008/02/29 15:17

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