リストのデータを重複なしでランダムに抽出する方法

このQ&Aのポイント
  • エクセル2010を使用して、リストのデータを重複なしでランダムに抽出する方法を教えてください。
  • 特定のセルから指定した列数おきにデータを抽出する方法を教えてください。
  • 具体的には、Sheet2のセルH6から15列おきにデータを抽出したいです。どの部分を変更すれば良いでしょうか?
回答を見る
  • ベストアンサー

リストのデータを重複なしでランダムに抽出する

シート1に下記のように14種類の名前リストがあります     A 1   A 2   B 3   C 4   D 5   E 6   F 7   G 8   H 9   I 10  J  11  K 12  L 13  M 14  N 上記の名前を下記のように別シートの数列おきの列(行は同一)に重複なしに行毎にランダムに抽出する事が関数で出来るでしょうか?(エクセルは2010です) ちなみに下記は一列おきのセルに抽出した例です   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA 1 D   L   K    I    A   M   N    B   H   J    C    F    E   G 2 K   J   M   H    I   G   F    E   D    A    B   N   C    L 3 E   J   A    L   B   M    K   C   N    G    F   D    H   I どなたか教えていただける方がおりましたらよろしくお願いします。 という質問をさせていただき、mike gさんに下記のような回答をいただきました 1.Sheet1 の例えばセル C1 に式 =RAND() を入力して、此れを右に2列(注1参照)ドラッグ&ペースト 2.範囲 C1:E1 を下方にズズーッと(14行目まで)ドラッグ&ペースト 以下は別シート(Sheet2)における操作です。 3.セル A1 に次式を入力して、此れを右方にズズーッと(セル AA1 まで)ドラッグ&ペースト(注2参照)   =IF(MOD(COLUMN(),2)=1,INDEX(Sheet1!$A$1:$A$14,MATCH(SMALL(OFFSET(Sheet1!$C$1,,ROW()-1,14,),CEILING(COLUMN()/2,1)),OFFSET(Sheet1!$C$1,,ROW()-1,14,),0)),"") 4.1行目全体を下方にズズーッと(3行目まで)ドラッグ&ペースト 注1:「右に2列」は別シートの行数が3行の場合で、4行(5行)の場合は「右に3列(4列)」に読み替える。 注2:式中の 2 は「一列おき」の場合で、二列(三列)おきの場合は 2 を 3(4) に書き替える。 これで完璧に出来たのですが 実際にはSheet2のセルH6から15列おきに抽出したいのです。 15列おきは出来たのですが、セルH6から抽出を始めるにはどの部分を変更すれば良いのでしょうか? どなたか教えて頂ける方がおりましたらよろしくお願いします。

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

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

H6: =IF(MOD(COLUMN(A1),16)=1,INDEX(Sheet1!$A$1:$A$14,MATCH(SMALL(OFFSET(Sheet1!$C$1,,ROW(A1)-1,14,),CEILING(COLUMN(A1)/16,1)),OFFSET(Sheet1!$C$1,,ROW(A1)-1,14,),0)),"")

kamar3
質問者

お礼

たびたびお世話になりありがとうございます。 15が16でしたが完璧に出来ました。 少しずつ理解できるようになりました。

その他の回答 (1)

回答No.1

そのものずばりではないですが、たぶん、ヒントになる回答。 B1セル =RAND() C1セル =INDEX($A$1:$A$14,RANK(B1,B$1:B$14)) B1:C1セルを下へオートフィル そのまま右へオートフィル(欲しい行数*2) ---- * ---- * ---- * ---- * ---- * ---- C17セル 1 下へ連番 D16セル 1 右へ 飛び飛びで連番。 D17セル =IF(D$16="","",INDEX($B$1:$I$14,D$16,$C17*2)) 右へ下へオートフィル

kamar3
質問者

お礼

ありがとうございます。 参考になりました。

関連するQ&A

  • リストのデータを重複なしでランダムに抽出する

    シート1に下記のように14種類の名前リストがあります     A 1   A 2   B 3   C 4   D 5   E 6   F 7   G 8   H 9   I 10  J  11  K 12  L 13  M 14  N 上記の名前を下記のように別シートの数列おきの列(行は同一)に重複なしに行毎にランダムに抽出する事が関数で出来るでしょうか?(エクセルは2010です) ちなみに下記は一列おきのセルに抽出した例です   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA 1 D   L   K    I    A   M   N    B   H   J    C    F    E   G 2 K   J   M   H    I   G   F    E   D    A    B   N   C    L 3 E   J   A    L   B   M    K   C   N    G    F   D    H   I どなたか教えていただける方がおりましたらよろしくお願いします。

  • 元データが空白時に抽出結果がゼロの場合

    先日、当サイトにて解決に至った関数(H列5行)ですが、これを活用し作成を進めている中で、また行き詰っており、皆様の助言をお願いします。 参照元シート(管理簿) G列5行 空白 別シート G列5行 {=IFERROR(INDEX(管理簿!$A$5:$L$142,MATCH(LARGE((管理簿!$L$5:$L$142="〇")*1/ROW(管理簿!$L$5:$L$142),ROWS(管理簿!$L$1:$L1)),1/ROW(管理簿!$L$5:$L$142),0),COLUMNS(管理簿!$L$1:R$1)),"")} H列5行 =IF(OR(E5<F5,D5>$E$2),0, IF(G5="",MIN(E5,$E$2)-MAX(F5,D5)+1, IF(G5<F5,0,MIN(E5,G5,$E$2)-MAX(F5,D5)+1))) 上記のように参照元シートから別シートG5に抽出される計算式が入っており、別シートG5も含め経過日数をH5にて計算する式が入っております。計算参照元シートのG5セルが空白時に抽出結果がゼロとなることから、別シートG5セルがゼロで表示され、別シートH5の計算結果が望んでいる結果とならなくゼロとなると解釈しておりますが、これを解消する方法はありますでしょうか?別シートH5の計算式において、G5がゼロの場合計算しない(参照しない)等ができますでしょうか? 尚、それぞれのシートG5には年月日が入っており、オプションにてゼロを非表示にしております。 何卒よろしくお願いいたします。

  • VBAを使用したデータの抽出について

    sheet1に下記のような(例)データベースがありA~N列までデータが入力されています。 A B  C  D  E   F  G  H I J  N 1 ○○様 ○○  2名  車   可 東京 *** *** *** 2015/7/1 2 ○○様 ××  3名  車  不可 埼玉 2015/8/1 3 ○○様 ×□  2名  電車 不可 愛知 2015/8/12 4 ○○様 □□  4名  バス  可  新潟 2015/7/13 5 ○○様 ○×  3名  バス  可  宮城 2015/6/1 6 ○○様 ○□  4名  車  不可 大阪 2015/8/21 7 ○○様 □○  2名  バス  可  山梨 2015/8/7 「sheet1」B列のデータを元にして、別シート(sheet2)のA2列に抽出したいもの(例:バス)を入力し、 フォームボタン(例:抽出)で検索し、抽出された結果のsheet1のA列~G列、N列のみ(H列~J列は不要)をSheet2のA11以下へ表示したいと考えています。 A  B  C  D  E   F  G   N 4 ○○様 □□  4名  バス  可  新潟 2015/7/13 5 ○○様 ○×  3名  バス  可  宮城 2015/6/1 7 ○○様 □○  2名  バス  可  山梨 2015/8/7 どのようなVBAのコードを使用すれば良いでしょうか。 宜しくお願いします。

  • リスト内の名前をランダムに抽出する。

    シート1に下記のように14種類の名前リストがあります     A 1  Aさん 2  Bさん 3  Cさん 4  Dさん 5  Eさん 6  Fさん 7  Gさん 8  Hさん 9  Iさん 10 Jさん  11 Kさん 12 Lさん 13 Mさん 14 Nさん それを下記のように別ブックのシートの14ブロックにランダムに重複しないように抽出したいのですが。     ブロック1       ブロック2       ・・・・      ブロック14     A     B      C     D              AA  AB 1 11月1日  Cさん  11月1日  Mさん  ・・・・    11月1日  Aさん さらに2行目に同じ日付がきた場合には(ブロック1)上の行と同じ名前にする 他のブロックは重複なしでランダムに抽出。     ブロック1       ブロック2       ・・・・      ブロック14     A     B      C     D               AA   AB 1 11月1日  Cさん  11月1日  Mさん    ・・・・     11月1日  Aさん 2 11月1日  Cさん  11月2日  Eさん    ・・・・     11月2日  Hさん ちょっとややこしいので、毎回ランダムに重複しないように抽出できればいいのですが。

  • 行列の入れ替え

    次の処理を行うプログラムを書きたいのですが教えていただけないでしょうか? (処理) B列のあるセルの値が2000または2001の場合、当該行のc列からn列までのセルをコピーし、11行を挿入し、行列を入れ替えて貼り付ける。 この処理を繰り返したいです。             (処理前) A  B  C  D  E  F  G   H  I  J  L  M  N  O 1 2000  1  2  3  4  5  6  7  8  9  10  11  12 2 3 4 5 6 7 8 9 10 11 (処理後) A  B  C  D  E  F  G  H  I  J  L  M  N  O 1  2000  1 2      2 3      3 4      4 5      5 6      6 7      7 8      8 9      9 10     10 11     11 12     12 13     13 よろしくお願いします。

  • VBAで重複データは最後のみ反映し並び替え

    下記の様にE,F,G,H,I,J,K,L,M,Nに文字(主に地名)を入力した後VBAで横に検索していきA列に重複は最後の文字を抽出し縦に並べて行きたいのですがご教授頂けませんでしょうか。 説明が難しいのですがE5から横に検索し重複する文字は最後のみ反映し空白のセルは反映させずA1上から詰めて転記するイメージとなります。度々入力値が変更される事もあるので実行ボタンを設置してVBAで処理出来たら助かります。どうぞ宜しくお願い致します。(下記イメージです) E  F G H  I  J  K  L  M  N 111 111 222 111 333 111    222 222 111 111 222 444 333 666 555 333 777 444 999 222 333 888 888 666   999 333 333 666 555 666 666 666 ⇓ A 111 777 444 222 888 999 333 555 666

  • (EXCEL)重複したデーターの抽出について

    EXCEL2003 シート「sheet1」に下記のようなデーターがあります。 <sheet1>   A   B   C  D 1 りんご 青森 AAA BBB 2 みかん 愛媛 CCC DDD 3 みかん 青森 AAA BBB 4 りんご 青森 AAA BBB 5 みかん 愛媛 CCC DDD A列とB列が同じ値のものをシート「sheet2」に重複しているデーター は1行だけになり、E列にカウントした数が入力されるようにしたいです。 (C列やD列は同じ値でなくてもA列とB列が同じ値の時にカウントして抽出したいです) <sheet2>   A   B   C  D   E  りんご 青森 AAA BBB  2  みかん 愛媛 CCC DDD  2   ご教示のほどお願いします。

  • VBA 期間を指定してデータを別シートに抽出

    sheet1に下記のような(例)データベースがありA~N列までデータが入力されています。 A  B  C  D  E  F  G  H I J K L M  N 1 りんご ○○ BA 2526  ○  あお *** *** *** *** *** *** 2015/7/1 2 みかん ××  BC  2526 ○  あお 2015/8/1 3 すいか ●●  BB  2429  ●  あか 2015/8/12 4 メロン □□  DC  2355 □  あか 2015/7/13 5 バナナ ○×  FE  2526  ○  あお 2015/6/1 6 いちご ●□  LA  2429  ●  あお 2015/8/21 7 ぶどう □○  HK  2526  □  あか 2015/8/7 「sheet1」N列の日付を元にして、別シート(sheet2)のA2列に「開始日付(yyyy/mm/dd」、B2列に「終了日付(yyyy/mm/dd」(例:2015/8/1~2015/8/31)を入力し、フォームボタン(例:抽出)で検索を開始し、抽出された結果のsheet1のA列~G列、N列のみ(H列~M列は不要)をSheet2のA7以下へ表示したいと考えています。 A  B   C  D  E  F  G   N 2 みかん ××  BC  2526 ○   あお 2015/8/1 3 すいか ●●  BB  2429  ●  あか 2015/8/12 6 いちご ●□  LA  2429  ●  あお 2015/8/21 7 ぶどう □○  HK  2526  □  あか 2015/8/7 期間を指定し検索した結果を別のシートへ表示するにはどのようなVBAのコードを使用すれば良いでしょうか。 宜しくお願いします。

  • エクセルVBA/抽出・貼付け

    下記を行いたいのですが、どのようなコードになるのでしょうか? シート001(入力用) (1)A1~A50、B1~B50、C1~C50、D1~D50  に数値、E1~E50に文字列 (2)F1~F50、G1~G50、H1~H50、I1~I50  に数値、J1~J50に文字列 ※空白行混在 シート002(計算用) シート001に作ったコマンドボタン:クリックにより、 シート002を表示させ、A1~E100に、 シート(1)のA1~E50とF1~J50の空白行以外を連続して 反映させたい。並べ替え用など別シートを用いずに、 VBAコード内で処理したい。

  • エクセルで50行ごとに区切ったデータをシートに分割したい

    エクセルで2000行ほどある一枚のシートを50行ごとに (1-50)(51-100)(101-150)…と分割して、一つずつ 新しいブックで保存する作業があります。 今までは50行ごとにコピーして新しいブックにペーストを 繰り返してましたが、大量にきたもので困ってます。 何か自動化などできないことでしょうか? ご回答お待ちしております。 参考にシートは以下のような形式です。   A  B  C  D 1  a  1   1  1 2  b  1   2  3 3  c  2   3  4 4  d  5   6  7 5  e  7   8  9 6  f  2   3  4  7  h  5   6  7 8  g  8   9  1 9  n  2   3  4 10 n  5   6  7 ・ ・ ・ 50 j  5   6  7

専門家に質問してみよう