• 締切済み

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

エクセルの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です。 よろしくお願いします。

みんなの回答

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

大量のデータを扱う場合に配列数式などを使うことは計算に負担がかかりますので出来るだけ作業列を使って対応することです。 シート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))))

purin6
質問者

補足

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

回答No.1

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

purin6
質問者

お礼

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

関連するQ&A

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

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

    エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     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のデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。

  • データ抽出について

    エクセル初心者です。 エクセル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を参考に試行錯誤を続けていましたが、進展がありません。 お詳しい方よりのご回答をお待ちしております。

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

    必要なデータを抽出したい    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 となるようにしたいのです。

  • 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組のシートから読み出すといった感じです。 説明がへたで 申し訳ないのですが うまく検索ができなくて困っています。 ぜひ くわしいかた教えてください。 どうぞ よろしくおねがいします。

  • Excel 複数の項目合致するデータを抽出したい

    是非、よろしくお願いいたします。 以下の状況です。 sheet1には A、B、C、Dという4列があります。データは1000行くらいです。 sheet2には A、B、C、Eという4列があります。データは2000行くらいです。 この状況で、sheet1のD列の右に新しい列を作り、 「sheet1の(例えば)A1、B1、C1と合致する行のsheet2のE列データ」を、 sheet2のABC列範囲を検索して抽出したいのです。 項目が一つであればvlookup関数でできるものを「複数項目に合致」のため上手くいきません。 この3列のデータを結合して一つにしてみましたが、結合後のデータが16桁以上のため末尾が「0」になってしまい、正確に検索できません。 何か上記を可能にする方法はないでしょうか? よろしくお願いいたします。

  • エクセル2000 データの抽出

    エクセル2000です。 とあるシート[start]のセルF1とF2で入力した文字列をそのまま繋げ(START!F1&START!F2)たものを検索の対象にして、他のシートにあるレコードを検索したいのです。 他のシート[入金履歴]の一番左の列を検索して、検索対象と一致するレコードが欲しいのです。 が、一致するレコードはn件。つまり、一対nになってます。一対一ならばVLOOKUPで話は簡単なのですが、一致する複数のレコードをどう引っ張ってきたらいいかわかりません。

  • データの抽出について

    エクセルにてデータの抽出をしたいのですが、わからないので教えてください。 例えば、下の様なデータがあります。 回数   1回目   2回目   3回目   4回目 1000    あ      a      A      0 1001    い       b       B      1  1002    う       c       C      2 1003    え      d       D      3   1004    お      e       E      4  1005    か      f       F      5 別のシートに、 回数の1001と入力すると、3回目のBが抽出    1003と入力すると、3回目のDが抽出    1005と入力すると、3回目のFが抽出出来る様にしたいです わかりにくい文章ですいませんが、ご回答よろしくお願いします。 

  • Excelでの複数データ抽出方法

    Excelで関数を使用して以下のようなデータから 複数のデータ抽出を行いたいのですが可能でしょうか? <sheet1> A列 B列 C列 D列     E列 123456 11 12 13    13 123457 12 13 14    13、14 123158 13 14 15    13,14 123159 14 15 16    14  123160 15 16 17 ※抽出するデータは「13・14」になり、抽出場所は別シートでもかまいません。 過去の質問など参照してみましたがうまく出来ませんでした。 複数の関数を組み合わせでもかまいませんので、お手数おかけしますが よい方法が有ればご教示お願いします。

  • エクセルでのデータ抽出について

    初めて質問させていただきます。 2つの銘柄の株価データをエクセルにコピペした後、日付と時刻が同じものを行を揃えて抽出したいのですが、いろいろ試してみましたがわかりません。 具体的には次のようにしたいのですが・・・。 【元データ】  A列     B列    C列    D列    E列    F列 ・ ・ 2007/11/9  9:20:00  520  2007/11/9  9:25:00  1544 2007/11/9  9:15:00  514  2007/11/9  9:20:00  1520 2007/11/9  9:10:00  513  2007/11/8  15:00:00  1430 2007/11/9  9:05:00  509  2007/11/8  14:55:00  1425 2007/11/9  9:00:00  501  2007/11/8  14:50:00  1427 2007/11/8  14:55:00  497   2007/11/8  14:45:00  1431 ・ ・ 【抽出後】 ・ ・ 2007/11/9  9:20:00  520  2007/11/9  9:20:00  1520 2007/11/8  14:55:00  497  2007/11/8  14:55:00  1425 ・ ・ どなたか宜しくお願いいたします。

専門家に質問してみよう