• 締切済み
  • 困ってます

エクセル 大量のデータから抽出し自動表示

エクセルのSheet1のC列に大量(3500件くらい)のデータがあります。このデータは毎日さらに増えます。D列にもおなじだけのデータがあります。 (E列・F列にはあとから別のデータをさらに入力していきます。) Sheet1 A B C D E F     1 2 3 4     2 3 4 5      1 3 5 6     3 5      2 4      ・ ・     ・ ・ こんな感じです。 今回、このC列に入っているデータを検索し、完全に一致したデータのみを別シートに抽出したいのです。 C列にはいろいろな数字が入っていて、同じものもありますが、D列にも同じ数字とは限りません。 なので、VLOOKUPは使用できないのかと思っています。 一致したデータはその行をすべて別シートに抽出したいです。 検索をかけて一致しないデータがあった場合もその検索した数字は残しておいてさらに今後一致になるまでデータを残しておくという方法はできますでしょうか。 エクセルは2003です。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数3305
  • ありがとう数1

みんなの回答

  • 回答No.2
  • KURUMITO
  • ベストアンサー率42% (1835/4283)

大量のデータを扱う場合に配列数式などを使うことは計算に負担がかかりますので出来るだけ作業列を使って対応することです。 シート1のデータで同じデータの行を抽出し別のシートに表示させるのですが、同じデータの行が幾つもある場合にはどのようにするのでしょう。ここでは同じデータの行の一件だけを抽出する場合、および何件も抽出する場合についても対応する方法について説明します。 初めにシート1では2行目から下方にデータが入力されているとします。 作業列としてG2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(COUNT(C2:F2)=0,"",C2&"/"&D2&"/"&E2&"/"&F2) H2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(G2="","",IF(AND(COUNTIF(G:G,G2)>1,COUNTIF(G$2:G2,G2)=1),ROUNDDOWN(MAX(H$1:H1),-4)+10000,IF(COUNTIF(G$2:G2,G2)>1,INDEX(H$1:H1,MATCH(G2,G:G,0))+COUNTIF(G$1:G1,G2),""))) そこでお求めの表ですがシート2にA2セルには次の式を入力してF2セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(ROW(A1)*10000>MAX(Sheet1!$H:$H),"",IF(INDEX(Sheet1!$A:$F,MATCH(ROW(A1)*10000,Sheet1!$H:$H,0),COLUMN(A1))=0,"",INDEX(Sheet1!$A:$F,MATCH(ROW(A1)*10000,Sheet1!$H:$H,0),COLUMN(A1)))) 同じデータの行を何件も抽出して表示させる場合にはA2セルには次の式を入力してF2セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(ROW(A1)>COUNT(Sheet1!$H:$H),"",IF(INDEX(Sheet1!$A:$F,MATCH(SMALL(Sheet1!$H:$H,ROW(A1)),Sheet1!$H:$H,0),COLUMN(A1))=0,"",INDEX(Sheet1!$A:$F,MATCH(SMALL(Sheet1!$H:$H,ROW(A1)),Sheet1!$H:$H,0),COLUMN(A1))))

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 C列は数字で、D~F列は日付の場合でもできるのでしょうか? なぜかうまくいきません。 また、C列に入力した数字が3つの場合計算式が対応していましたが、4つ(以上)になるとだめです。 その場合はどうしたらいいのでしょうか。対応方法を教えていだたけますでしょうか。

関連するQ&A

  • Excelをデータベースのように使用した場合 データの抽出

    Excelをデータベースのようにして使用している場合について教えて欲しいことがあります。  ・Sheetを2つ作成したとします。  ・Sheet1はたくさんのデータが入っているシートです。  ・Sheet1の名前を仮に『Data』とします。  ・Sheet2はSheet1から必要なデータを抽出してきて並べるシートです。  ・Sheet2の名前を仮に『Report』とします。  ・『Data』のA列には1~200までの数字が入力されています。  ・その数字は ランダムである上に 重複していることもあります。  ・例えばA1には「1」が入力されていて A2には「2」が入力されています。  ・しかし その後A3にもA4にもA5にも「2」が入力されています。  ・同様にA6~A15までは「3」が入力されているのです。  ・このようにA列の数字は 同じ数字が何度も重複しており その重複には規則性はありません。  ・『Report』シート上で『Data』シートからデータを抽出したいのですが A列に「1」と入力されているデータだけを取り出すのなら「VLOOKUP」でもできますよね・・・・  ・しかし A列に「2」と入力されているデータを「VLOOKUP」関数で選んでも その先頭行のデータしか読み込んできません。  ・『Data』シートのA列に入力している数字から 必要な数字が入力されている行のデータだけを 全て『Report』シートに並べようとした場合 手作業で行うとすると・・・ 『Data』でA列が「1」のデータだけを選び,それを『Report』シートに貼り付ける。次は「2」で実行する。・・・・・という作業を200回繰り返すことになりますが 簡単に行うにはどのようにすればいいのでしょうか? マクロについては あまり詳しくないので できれば関数を使いたいのですが 無理でしょうか? マクロを使うのであれば 分かりやすく教えていただきたいのですが・・・ 勝手なお願いで申し訳ありませんが よろしくお願いします。

  • 必要なデータを抽出したい

    必要なデータを抽出したい    A   B    C   D ・・・ 1 7/1   101   102  103 2 7/2   101   103 3 7/3   105   203 4 7/4   103   205 5 7/5   101   202 ・ ・    ・ ・ ・    ・ ・ ・    ・ Excelで上の様にA列に日付、B行列以降に数字が書かれているシートから、抽出したい数字が含まれている行を別シートに抽出するマクロはどのように書けばよろしいのでしょうか。 技術者の方、よろしくお願いします。 例えば、101が含まれているデータを抽出したら、sheet2に    A   B    C   D 1 7/1   101   102  103 2 7/2   101   103 3 7/5   101   202 となるようにしたいのです。

  • エクセルデータ抽出方法を教えてください

    エクセルでのデーター抽出方法を教えてください、シート1:A1にUA1と入力し、シート2:A列にはUA1・・・・複数のデータが縦に並んでいます、シート1:A1に入力したデーターを元にシート2:A列を検索し該当するデータの抽出を行いたいです、VLOOKUPではうまく行きません教えてください

  • 回答No.1

よくわかりませんが、C列の中で同じものを別シートに出したいんですよね? それだと正直、数式でやるのは厳しい気がします。 その場合はVBAを使うのがいいと思います。(これは、別で調べた方がいいと思います。) もし、例えばA1セルに入っているものをC列の中から検索するのであれば、 G列に=if(A$1=C1,1,0) で下まで引っ張って同じものをフラグとしておいてあげれば、Vlookupで簡単に出来ると思います。 ただ、Vlookupを使っても、3000件超えるとすごぉく遅いですし(PCにもよるとは思いますが・・・) VBAをちょこっと調べることをお勧めします。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のご回答ありがとうございます。 検索にあてはまるものすべてを抽出したくて・・・ VLOOKだと無理そうですよね。 マクロ?VBA?のほうがいいかとも思うのですが、自動記録の作成方法もいまいちわからず(><) できれば、オートフィルタは今回使用しない方向で考えてます。 回答ありがとうございました。

関連するQ&A

  • excelのデータ抽出?検索?についておしえてください。

    excelのデータ抽出?検索?についておしえてください。 エクセル2003で sheet1に次のようなデータがあります。   A列  B列  C列     D列  E列 ・・・ 1 組   番号  氏名     古典  現文 ・・・  2 1   1   青木 優    3 1   2   池田 洋子   4 1   3   植村 美紀   ・ ・ sheet2には1組の成績が sheet3には2組の成績が入っています。 クラスによって科目が違います。 この「氏名」と1行目の「科目名」が一致するデータを 他のシートから読み出してくる関数がありませんでしょうか 青木さんの古典を1組のシートから読み出すといった感じです。 説明がへたで 申し訳ないのですが うまく検索ができなくて困っています。 ぜひ くわしいかた教えてください。 どうぞ よろしくおねがいします。

  • データ抽出法

    一度似たような質問をしましたが応用がきかないので、教えてください。 Sheet1A列に入力されたデータ群を含むデータを別sheetから抽出したいのですがやり方がわかりません。 要は、Sheet1A列に10000件のデータが入力されているのですが、それらを含むデータを別シートから検索したいのです。(別シートで10000回検索しない方法が知りたいです。) よろしくお願いします。

  • エクセルで複数の条件範囲に合う行を別シートに抽出

    エクセルの関数で複数の条件範囲に合う行だけをを別シートに抽出したいのですが、 どうしても方法が分かりません。 誰か教えて頂けないでしょうか? 検索は範囲です。 宿泊日○○○○○○○○~○○○○○○○○(例20111110~20240204) 人数 ○人~○人 (○の中に数字が入ります) 西暦日付と人数が両方一致している行を別シートに抽出したいです。 バージョンは2007.2010両方とも問題ないです。 Sheet1    A     BCDEFGHIJKLMN   O 1 宿泊日                 人数 2 20100223               20 3 20110103               5 4 20111118               9 5 20120505               13 6 20121010               7 8 20120224               32 9 20121121               28 Sheet2    A      B    C   D    E   FGHIGKLMN    O 1 検索 2 宿泊日 20110101 ~ 20121111 3 人数     8    ~   30     人 4 5 宿泊日                                  人数 6 20111118                                   9 7 20120505                                  13 Sheet1、A列の宿泊日とO列の人数の範囲が一致するものを、 Sheet2の検索から、行ごと抽出(複数)し、Sheet2に反映する関数を教えて頂けないですか? いろいろ検索して探しましたが、複数抽出する方法がわかりませんでした。 よろしくお願いいたします。

  • エクセルで複数の条件範囲に合う行を別シートに抽出

    エクセルの関数で複数の条件範囲に合う行だけをを別シートに抽出したいのですが、 どうしても方法が分かりません。 誰か教えて頂けないでしょうか? 検索は範囲です。 宿泊日○○○○○○○○~○○○○○○○○(例20111110~20240204) 人数 ○人~○人 (○の中に数字が入ります) 西暦日付と人数が両方一致している行を別シートに抽出したいです。 バージョンは2007.2010両方とも問題ないです。 Sheet1    A     BCDEFGHIJKLMN   O 1 宿泊日                 人数 2 20100223               20 3 20110103               5 4 20111118               9 5 20120505               13 6 20121010               7 8 20120224               32 9 20121121               28 Sheet2    A      B    C   D    E   FGHIGKLMN    O 1 検索 2 宿泊日 20110101 ~ 20121111 3 人数     8    ~   30     人 4 5 宿泊日                                  人数 6 20111118                                   9 7 20120505                                  13 Sheet1、A列の宿泊日とO列の人数の範囲が一致するものを、 Sheet2の検索から、行ごと抽出(複数)し、Sheet2に反映する関数を教えて頂けないですか? ちなみにSheet1は常に更新され、入力をする事が出来ませんので、 Sheet1に手を加えることのなく、Sheet2のみに関数を入れて処理出来る関数でお願いします。 いろいろ検索して探しましたが、複数抽出する方法がわかりませんでした。 よろしくお願いいたします。

  • 重複するデータの抽出

    どなたか教えてください。 Sheet1A列に入力されたデータ群と重複するデータを 別sheetから抽出したいのですがやり方がわかりません。 要は、Sheet1A列に10000件のデータが入力されているのですが、それらと重複するデータを別シートから検索したいです。(別シートで10000回検索しない方法が知りたいです。) よろしくお願いします。

  • エクセルでデータの抽出する際に困っています

    エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     A   B   C   D   E   F   G   ---------------------------------- 1l  10   11   0   0   0   0   0 2l  12   13   0   0   0   0   0 3l  14   15   1   2   3   4   5 4l  16   17   0   0   0   0   0 5l  18   19   0   0   0   0   0 6l  20   21   6   7   8   9   10 7l  22   23   0   0   0   0   0 というような感じのエクセルデータに対して、     A   B   C   D   E   F   G    ---------------------------------- 1l  14   15   1   2   3   4   5 2l  20   21   6   7   8   9   10 というように、C~G列が0でない行のA~Gのデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。

  • Excelでのデータ抽出

    Excelで外部結合風のデータ抽出を教えてください。 シートAとシートBに表形式のデータがあり、 シートAのA列の値とシートBのA列の値が一致するシートBの 行を抽出するのが目的です。 具体的には次のような感じです。 シートA         シートB ----------------  ---------------- A列 | B列 | C列     A列 | B列 | C列 ----------------  ---------------- 2  | 2B  | 2C      1  | 1BB | 1CC ----------------  ---------------- 4  | 4B  | 4C      2  | 2BB | 2CC ----------------  ---------------- 6  | 6B  | 6C      3  | 3BB | 3CC ----------------  ---------------- ↓ シートB ---------------- A列 | B列 | C列 ---------------- 2  | 2BB | 2CC ---------------- 以下以外の方法がありましたら教えてください。 1)アクセスに両シートのデータを取り込み、2つのテーブルを外部結合で連結させる。 2)マクロで二重ループをつくり、A列が一致した行を取り出す。 よろしくお願いします。

  • エクセルでVLOOKUP関数を使用すると、データ数が多くてフリーズしてしまいます。

    エクセルでVLOOKUP関数を使用すると、データ数が多いくてフリーズしてしまいます。どうにかして解決できないでしょうか。 エクセルでVLOOKUP関数をしようして、データ数が多いとフリーズしてしまうのですが、何か解決方法ありますでしょうか。 エクセルでVlookUpを使い、Sheet1にsheet2から一致したデータを読み込もうと思うのですが、 データが重くなりすぎて、PCがフリーズしてしまいます。 どうにかして、簡単にVlookupと同じように一致したデータを抽出することはできないでしょうか。 sheet1では B列を入力して、C列を抽出したいです。 A列_____ ___B列_____ _____ _____ _____ ___C列 No_____ 入力項目_____ _____ _____ _____ 保存場所 1_____ #EXTINF:213,08___________ suzuki I:\music\suzuki 2_____ #EXTINF:223,08___________ satou U:\music\satou 2_____ #EXTINF:223,121__________kondou G:\music\kondou ↑ =VLOOKUP(B2,sheet2!$A$2:$B$40000,2,FALSE) =VLOOKUP(B3,sheet2!$A$2:$B$40000,2,FALSE) =VLOOKUP(B4,sheet2!$A$2:$B$40000,2,FALSE) sheet2のデータは A列_____ _____ _____ _____ ____B列 項目1_____ _____ _____ _____ 保存場所 #EXTINF:213,08_____ #suzuki I:\music\suzuki #EXTINF:223,08_____ #satou U:\music\satou #EXTINF:223,121____#kondou G:\music\kondou

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • データ抽出について

    エクセル初心者です。 エクセル2003を使っています。 sheet1に元データとなる表があります。 ・データセル内は数値データです。 ・行方向へは200程度 ・列方向へは1500程あります。  A   B    C    D   E     F  1日付 項目1 項目2 項目3 項目4 項目5 ・・・ 2 3 4 5 6 この元データからsheet2へ日付をキーにして行データを抽出したいのです。 抽出先のsheet2のA列に予め目的の日付データのみ1200程入っています。 最初Vlookupでやり始めたんですが無理と分かりました。 フィルタオプションで試みたのですが、「検索条件範囲」の式の書き方が 分からず困っております。 OKWaveの関連したQAを参考に試行錯誤を続けていましたが、進展がありません。 お詳しい方よりのご回答をお待ちしております。