- 締切済み
エクセル関数で任意抽出して、ランダム利用するには?
Visual Basic の知識が無いので、エクセル関数に限定して教えて欲しいのですが、 (例) (1)ロト6の予想システムを表計算でしたい。使用数字は、1~43 (2)セルB1~C43までの表がある (3)B1~B43には1~43の数字 (4)C1~C43には、独自の予想法により、関数で絞り込んだ数字の隣に◎、候補以外は空白 (5)◎がついた候補数字のみを、ランダムで6個抽出する関数を設定したい フィルタ機能を使って、データ抽出する「マクロボタン」の登録とかでもやってみたのですが、 最後のランダムで抽出する段階で、わからず手詰まりになってしまいます。 良い方法がありましたら、是非教えて下さい。お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
E列には次の式を入力して下方にオートフィルドラッグコピーします。 =IF(B1="","",RAND()) F列にはE列に表示されるデータのうちで何番目に大きい数値(ランク)を選択するかを自分で決めてその数字をF1セルから下方に入力します。例えば1,5,10,15,20・・・のように入力します。これで一次の選考基準を決定します。二次の選考はF1セルからF6セルに入力したランクで行うことにします。 F列にデータを自分で入力した後でC1セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(COUNTIF(F$1:F$43,RANK(E1,E$1:E$43))=0,"","◎") D1セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(OR(C1="",C1<>"◎"),"",IF(COUNTIF(F$1:F$6,RANK(E1,E$1:E$43)),"◎","")) D列にはC列で選ばれたうちの6つのセルに表示されることになります。
- keithin
- ベストアンサー率66% (5278/7941)
簡単な方法: A1に =IF(C1="◎",RAND(),"") と記入してA43までコピー貼り付ける E1からE6に1,2,3,4,5,6を記入する F1に =VLOOKUP(SMALL(A:A,E1),A:B,2,FALSE) と記入し,F6までコピー貼り付ける。