- ベストアンサー
複数のエクセルのファイルから共通する項目を抽出する方法
- 複数のエクセルのファイルにおいて、共通する項目のみを抽出する方法を教えてください。エクセル初心者です。
- データ1とデータ2の表を利用して、データ2(今年度の購入分)からデータ1(今月の購入分)のみを抽出することは可能でしょうか?実際はひとつひとつ抽出するには途方もない量のデータなので、知恵を貸していただけるととても助かります。
- 確実に双方に入力されているデータは品名と購入店名のみなので、その二つの情報を元に、共通する項目を抜き出すしか方法がなさそうなのです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
NO.1です! 補足を読ませてもらいました。 hakkairoさんが仰っている、三つの問題点の最初の二つについてはまったく問題ないデータ量だと思います。 行数が万単位でもちゃんと表示されるはずです。 一つ気になるのが三点目です。 「品名コードと店名がまったく同じデータが複数存在する」ということなので前回のSheet2の作業列D2セルの式では 最初のデータのみしか抽出しませんので、結果に同じものが複数表示されても良いのであれば D2セルの数式を =IF(COUNTBLANK(A2:C2),"",IF(COUNTIF(Sheet1!E:E,A2&B2&C2),ROW(),"")) に訂正してみてください。 尚、最後にある >ちなみに、作業列2には数字が「0~4」までしか表示されていませんでした。 に関しては「0」という数値が出ること自体がおかしいですねぇ~! 数式の ROW() となっていますのでその行番号が表示されるはずです。 この件に関してはちょっと判りかねます。 この程度で解決できないかも知れませんが・・・ ごめんなさいね。m(__)m
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
分かりやすいようにデータ1をシート1に、データ2をシート2に貼り付けることにします。その上でお求めの表をシート3に作るとしてシート3のA1セルには次の式を入力してC1セルまでオートフィルドラッグします。 =IF(COLUMN(A1)=1,Sheet1!$A1,IF(COLUMN(A1)=2,Sheet1!$B1,IF(COLUMN(A1)=3,Sheet1!$D1,""))) A2セルには次の式をC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(Sheet1!$B1="","",IF(COLUMN(A2)=1,INDEX(Sheet2!$A:$A,SUMPRODUCT((Sheet2!$B$1:$B$5000=$B2)*(Sheet2!$C$1:$C$5000=$C2)*ROW($A$1:$A$5000))),IF(COLUMN(A2)=2,Sheet1!$B2,IF(COLUMN(A2)=3,Sheet1!$D2,""))))
お礼
遅くなりましたが回答ありがとうございます。 質問文に書いた表は仮のもので、実際の表とはだいぶ異なる部分があり、 回答者様に書いていただいた式の内容を完全に理解する能力が私になかったため、 式をそのまま入力するという形では対応することができませんでした。 今後、勉強して知識がつきましたら参考にさせていただきます。
[データ]→[フィルタ]→[フィルタオプションの設定]を勉強しませう。
お礼
遅くなりましたが回答ありがとうございます。 今回は急いでいたのでこのような形で質問させていただきましたが、 今後のために自分でも勉強を重ねようと思います。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 質問は別ファイル(別ブック)になっていますが、↓の画像は別Sheetでやっています。 別ファイルでも方法はまったく同様です。 質問を読ませてもらうと商品はコードによって決まっているみたいなので、コードと購入店だけで判断できると思います。 両方のSheetに作業用の列を設けています。 Sheet1(データ1)のE2セルを =A2&D2 として、フィルハンドルの(+)マークでダブルクリック、またはオートフィルで下へずぃ~~~!っとコピーします。 Sheet2(データ2)のD2セルに =IF(COUNTIF(Sheet1!E:E,A2&C2)=1,ROW(),"") という数式をいれ、同様にオートフィルで下へコピー! 最後にSheet2のF2セルに =IF(COUNT($D:$D)<ROW(A1),"",INDEX(A:A,SMALL($D:$D,ROW(A1)))) という数式をいれ、列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 こんなんで良かったのですかね?m(__)m
補足
詳しい説明ありがとうございます。 教えていただいた通りにやってみたところ、こちらの表では確かにできました。 が、実際のデータでは上手くできませんでした…何故でしょうか。 抽出できないデータがどうしても残ってしまうのです。 原因として考えられるのは下記の三点かと思うのですが… ・データ1のデータが多すぎる(100行以上) ・データ2のデータが多すぎる(1000行以上) ・品名コードと店名が全く同じデータが複数存在する ちなみに、作業列2には数字が「0~4」までしか表示されていませんでした。
お礼
遅くなりましたがありがとうございます! 作業列にはやはり0~4までの数字しか表示されませんでしたが、 抽出するものには数字が入るという判断材料とすることができたので、 フィルタをかけて数字が入っている項目のみを抽出しました。 本当に助かりました!