質問: エクセルのvbaについて エクセルのvbaに関することです。 例えば、50個のリストがあり、そこからランダムに10個選び出す。そのランダムに選び出す手順を10回繰り返す。ランダムに選んだ10セットをシートに書き出すやり方を教えてください。よろしくお願いします。 リスト 結果 1セット 2セット 3セット ・・・・・・・ 10セット りんご みかん りんご 梨 キウイ みかん 梨 バナナ パイナップル みかん 梨 いちご みかん キウイ バナナ バナナ : : : : パイナップル キウイ いちご ・ ・ ・ のような感じです。
回答: >ちなみにリストから選び出すとき、重複しないやり方はありますか? 無条件に選んでいるので重複することがありますね。選んだら消すようにして重複を避けるようにしました。ついでにマジックナンバー(数値)を変数にしました。 sub getrand10() const kaisuu = 10 '試行回数 const picknum = 10 '抽出個数 dim inilist as variant 'リスト dim wklist as variant 'リスト(作業用) dim listcount as integer 'リスト個数 dim r as integer '行カウンタ dim c as integer '列カウンタ dim idx as integer '抽出するインデックス inilist = range("a2:a51") 'シートから読み込み listcount = ubound(inilist) randomize '乱数の初期化 for c = 1 to kaisuu r = 0 wklist = inilist '配列の初期化 cells(1, c + 2) = c & "セット" '表題 '抽出個数まで実行 while r < picknum idx = int(rnd() * listcount + 1) '乱数 while wklist(idx, 1) = "" '消去データなら再試行 idx = int(rnd() * listcount + 1) wend r = r + 1 '出力 cells(r + 1, c + 2) = wklist(idx, 1) wklist(idx, 1) = "" '抽出したら消す wend next end sub