• ベストアンサー

エクセル データをオートフィルで抽出後乱数

エクセルのデータでオートフィルを使用し、ある程度絞り込んだものから ランダムなデータを抽出したいのですがやっていてもっとうまくやる方法はないかと思い 質問させえていただきました。 私が考えた方法はオートフィル後のデータにsubtotal関数を使用し上から順位をつけ 他のワークシートに乱数表(rand関数とrank関数を併用)を用意するというのもです。 件数の少ない条件ですとそれでもかまわないのですが、1000件中300件抽出という風になってくると 手間がかかりすぎてしまいます。 もっと簡単にできる方法はないでしょうか? データ自体は一行が1つのデータとなっており大体3万行ぐらいです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

方法1) 例えばSheet1に元リストがあり。 A1に乱数と記入 B1に番号と記入 C1にデータと記入 C2以下(以右)に目的の実データがあって絞り込んでいるとすると A2: =IF(SUBTOTAL(3,C2),RAND(),"") 以下コピー 抽出表では =VLOOKUP(SMALL(Sheet1!A:A,ROW(A1)),Sheet1!A:C,3,FALSE) といったモノを必要数並べて抽出してみます。 方法2) 例えばSheet1に元リストがあり。 A1に乱数と記入 B1に番号と記入 C1にデータと記入 C2以下(以右)に目的の実データがあって絞り込んでいて さらに,たとえば絞り込んで抽出された中から固定数で10件を「リストの上から順に」取ってくるようにしてみると A2: =IF(SUBTOTAL(3,C2),RAND(),"") 以下コピー B2: =IF(A2="","",IF(RANK(A2,A:A)<=10,MAX($B$1:B1)+1,"")) 以下コピー #「<=10」の部分を,必要に応じて調整して使う事。たとえば「抽出された件数の内から33%」なども。 抽出表では =VLOOKUP(ROW(A1),Sheet1!B:C,2) と言ったモノを必要数並べて抽出してみます。

kirinsandd
質問者

お礼

早々のご回答ありがとうございます。 やはり1シートでの運用ではなく複数シートでの運用のほうがうまくいきそうですね。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

ん? 感想や独り言を呟かれても,何もアドバイスできることはありません。寄せられた回答であなたは「これでイイや」と(良くも悪くも)納得しているという事で,お話はそこで終わります。ご相談投稿は放置せず,解決して閉じる操作を行っておいて下さい。 どうにかしたい事があるとか「こうしたい」とかここが分からないとか,もしも何か質問があるのなら,「どうしたい」「ここが分からない」「実際にこうやってみたらこうなってしまったのでこうなって欲しい」と補足してみてください。