• ベストアンサー

エクセルのランダム抽出について・・・

エクセルのランダム抽出に付いて教えてください。 A列に1000人の名前が並んでいます。 これをB列に5~8名程度をランダムに表示させるやり方が 知りたいです。 できたらボタンをつけてそれを押すたびにB列の表示が ランダムに変わるやり方がわかると大変助かります。 もしごぞんじのかたがおりましたらぜひともご教授 くださいませm(__)m

質問者が選んだベストアンサー

  • ベストアンサー
noname#52504
noname#52504
回答No.2

ん~、 ・どの程度のことをなさりたいのか ・どの程度のスキルをお持ちなのか 判らなかったので静観していたのですが、 なかなか回答がつかないようですし、 コーディング技術に関するご質問でもないようなので、 とりあえずご参考まで。 ----------------------------------------- ●まずは素朴に関数で。 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 '-----------------↑ ココマデ ↑----------------- 選んだものが、既に選んでいるものと重複するか否かを、 その都度総当りでチェックして、重複する場合は選び直しています。 抜き出す数が多くなると賢い方法とは言えませんが…。 以上ご参考まで。

doragon17
質問者

お礼

deus_ex_machinaさんありがとうございます。 1日にご回答いただいていたのに、gooからの「新しい回答が投稿されました」を 見落としていました(汗) 本日のassault852さんの投稿のお知らせで気が付きました。 ●まずは素朴に関数で。 こちらでやりたいことができました。 ボタンを使ってとなるとVBAのスキルが必要みたいで、私には だるまさんです(手も足も出ない) というとことで関数のやり方を活用させていただきます。 VBAのほうも勉強して試してみたいと思います。 アドバイスいただいた皆さんに感謝いたします m(__)m

その他の回答 (2)

  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.3

>やっぱり私のやりたいやり方はVBAのスキルとかが必要なんでしょうか もちろんです。 そういう意味では#2の回答が適切でしょう。 お勉強するつもりがなければ、あまり複雑なことは望まない方がよろしいと思います。

  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.1

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

doragon17
質問者

お礼

教えて!gooからのメールを見逃していました(汗) ご回答ありがとうございます。 >VBAの書き方をお尋ねなのでしょうか。 やっぱり私のやりたいやり方はVBAのスキルとかが 必要なんでしょうか? ほとんどVBAはわからないのですが・・・・ なにか簡単にできるソフトとかがあると便利なんですが・・・・ m(__)m