- 締切済み
エクセル 大量のデータから抽出し自動表示
エクセルの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)
- 専門家の回答
みんなの回答
- 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))))
- osarusan0214
- ベストアンサー率31% (15/47)
よくわかりませんが、C列の中で同じものを別シートに出したいんですよね? それだと正直、数式でやるのは厳しい気がします。 その場合はVBAを使うのがいいと思います。(これは、別で調べた方がいいと思います。) もし、例えばA1セルに入っているものをC列の中から検索するのであれば、 G列に=if(A$1=C1,1,0) で下まで引っ張って同じものをフラグとしておいてあげれば、Vlookupで簡単に出来ると思います。 ただ、Vlookupを使っても、3000件超えるとすごぉく遅いですし(PCにもよるとは思いますが・・・) VBAをちょこっと調べることをお勧めします。
お礼
早速のご回答ありがとうございます。 検索にあてはまるものすべてを抽出したくて・・・ VLOOKだと無理そうですよね。 マクロ?VBA?のほうがいいかとも思うのですが、自動記録の作成方法もいまいちわからず(><) できれば、オートフィルタは今回使用しない方向で考えてます。 回答ありがとうございました。
補足
ご回答ありがとうございます。 C列は数字で、D~F列は日付の場合でもできるのでしょうか? なぜかうまくいきません。 また、C列に入力した数字が3つの場合計算式が対応していましたが、4つ(以上)になるとだめです。 その場合はどうしたらいいのでしょうか。対応方法を教えていだたけますでしょうか。