複数のエクセルのファイルから共通する項目を抽出する方法

このQ&Aのポイント
  • 複数のエクセルのファイルにおいて、共通する項目のみを抽出する方法を教えてください。エクセル初心者です。
  • データ1とデータ2の表を利用して、データ2(今年度の購入分)からデータ1(今月の購入分)のみを抽出することは可能でしょうか?実際はひとつひとつ抽出するには途方もない量のデータなので、知恵を貸していただけるととても助かります。
  • 確実に双方に入力されているデータは品名と購入店名のみなので、その二つの情報を元に、共通する項目を抜き出すしか方法がなさそうなのです。
回答を見る
  • ベストアンサー

複数のエクセルのファイルにおいて、共通する項目のみを抽出する方法を教え

複数のエクセルのファイルにおいて、共通する項目のみを抽出する方法を教えてください。 エクセル初心者です。 たとえば下記のようなデータ1とデータ2のファイルがあった場合、 データ1と共通する項目のみを、データ2から抽出するにはどうすればよいのでしょうか。 ●データ1(今月の購入分) 品名コード 品名   価格  購入店名 1     りんご  100円  C店   5     みかん  300円  B店 1     りんご  120円  D店 4     すいか  900円  E店 ●データ2(今年の購入分) 品名コード 品名    購入店名 1     りんご   C店 3     かぼちゃ  B店  5     みかん   B店 6     にんじん  A店 1     りんご   D店 4     すいか   E店 上記の表のように、すべての項目がデータ1と2で共通しているわけではありません。 それぞれ別の人が入力したデータのため、入力形式や順序などが揃っていないのです。 確実に双方に入力されているデータは品名と購入店名のみなので、 その二つの情報を元に、共通する項目を抜き出すしか方法がなさそうなのです。 このデータ1とデータ2の表を利用して、 データ2(今年度の購入分)からデータ1(今月の購入分)のみを抽出することは可能でしょうか? 最終的にはデータ2を下記のような形にしたいのです。 品名コード 品名   購入店名 1     りんご   C店 5     みかん   B店 1     りんご   D店 4     すいか   E店 実際はひとつひとつ抽出するには途方もない量のデータなので、 知恵を貸していただけるととても助かります。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

hakkairo
質問者

お礼

遅くなりましたがありがとうございます! 作業列にはやはり0~4までの数字しか表示されませんでしたが、 抽出するものには数字が入るという判断材料とすることができたので、 フィルタをかけて数字が入っている項目のみを抽出しました。 本当に助かりました!

その他の回答 (3)

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

分かりやすいようにデータ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,""))))

hakkairo
質問者

お礼

遅くなりましたが回答ありがとうございます。 質問文に書いた表は仮のもので、実際の表とはだいぶ異なる部分があり、 回答者様に書いていただいた式の内容を完全に理解する能力が私になかったため、 式をそのまま入力するという形では対応することができませんでした。 今後、勉強して知識がつきましたら参考にさせていただきます。

noname#204879
noname#204879
回答No.2

[データ]→[フィルタ]→[フィルタオプションの設定]を勉強しませう。

hakkairo
質問者

お礼

遅くなりましたが回答ありがとうございます。 今回は急いでいたのでこのような形で質問させていただきましたが、 今後のために自分でも勉強を重ねようと思います。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例です。 質問は別ファイル(別ブック)になっていますが、↓の画像は別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

hakkairo
質問者

補足

詳しい説明ありがとうございます。 教えていただいた通りにやってみたところ、こちらの表では確かにできました。 が、実際のデータでは上手くできませんでした…何故でしょうか。 抽出できないデータがどうしても残ってしまうのです。 原因として考えられるのは下記の三点かと思うのですが… ・データ1のデータが多すぎる(100行以上) ・データ2のデータが多すぎる(1000行以上) ・品名コードと店名が全く同じデータが複数存在する ちなみに、作業列2には数字が「0~4」までしか表示されていませんでした。

関連するQ&A

  • エクセルで項目抽出

    エクセルで下記のような表から項目を抽出したいのですが うまくいきません A列 りんご みかん りんご ぶどう みかん と入力されていて任意のセルに、A列に入力されている項目から 重複分を除き抽出したいです 具体的には任意セルに「りんご、みかん、ぶどう」と抽出したいのです。 オートフィル機能を使いやってみましたが、 A列に後からデータを追加すると追加データまでは拾えませんでした。 よろしくお願いいたします

  • エクセル 行にある項目を抽出

    間違えて他のカテゴリーで質問してしまいました。 そちらは閉めましたので改めてこちらで質問させてください。 エクセルで下記のような表から項目を抽出したいのですが うまくいきません A列 りんご みかん りんご ぶどう みかん と入力されていて任意のセルに、A列に入力されている項目から 重複分を除き抽出したいです 具体的には任意セルに「りんご、みかん、ぶどう」と抽出したいのです。 フィルタオプションを利用し、抽出することはできました。 また、それをマクロ登録すれば、A列に追加項目があっても 自動変更できるという、回答も頂き、確かにできたのですが、 このエクセルから、ハイパーリンクでワードへ飛ばしたり、 いろいろと込み入っているため、できれば、 マクロではなく、関数利用をしたいのですが、 どのような関数を利用すればよいのかわかりません。 ご存知でしたら、ご教示お願いいたします。

  • Excelで複数条件で抽出した複数データを出力

    Excelで複数条件で抽出した複数データを出力したい Shett1のセルAとセルBの複数条件で、Sheet2を検索し一致したSheet2のセルCを Sheet1の該当するセルCに入れたいのです。 それを関数でするのはどうしたらいいのでしょうか? Sheet1 A B NAME ID(タイトル) いちご A01 いちじく A02 かき B01 すいか C01 なし D01 ぱいなっぷる E01 ばなな E02 ぶどう F01 みかん G01 めろん H01 もも I01 りんご J01 Sheet2 A B C 名前 ID 漢字(タイトル) みかん G01 蜜柑 いちご A01 苺 ぶどう F01 葡萄 りんご J01 林檎 もも I01 桃 かき B01 柿 なし D01 梨 すいか C01 西瓜 いちじく A02 無花果

  • [エクセル]複数の単語で抽出,空白をつめて表を作る

    次のような表をエクセルで作成したいと思っています。 後に残していくことを考えると,関数でできるならとてもありがたいです。 下の表から, [A列は商品コード。B列は商品名]   ↓   [購入者名] [いろいろな言葉が入っている。   ↓      ↓    空白のセルもあり]   ↓      ↓         ↓   A  B    C      D  E 1 15 りんご  ○○(株)  .. きりんセット 2 16 みかん  △△太郎  .. キリン,おまけ付き 3 19 メロン  (株)□□  ..  10ケ 4 16 みかん  ◇◇花子  .. ぱんだセット 5 28 アボガド ○○(株)  ..  6 12 スイカ  △△太郎  .. うさぎセット これを,別シートへ   A       B    C 1 ○○(株)  りんご  きりんセット 2 △△太郎  みかん  きりんセット 3         スイカ  うさぎセット 4 ◇◇花子  みかん  ぱんだセット というように,E列のセットのみを抽出し, [購入者]別にまとめて表示したいのです。 既存のシステムに不特定多数の人間が入力したものをコピーして加工しているため, E列の内容は,全角・半角の指定も,入力する内容も統一されていない状態です。 今のところ, [購入者名]で並べ替え → オートフィルタでE列の空白以外のセルを選択 → コピーして別シートに貼り付け → 不要な部分を削除 → 列の入れ替え という方法で表を作っているのですが,できるだけこの方法は使わずにできれば,と思っています。 よろしくお知恵をお貸しください。

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

    エクセル2010 重複データの抽出。 重複データの抽出方法をご教示ください。 抽出先はシート1のA列A3~抽出データの分だけ リストはシート2のB2:AB32まで フィルターオプションなども使ってみたのですが どうも上手くいきません。 どなたか知恵をお貸しください。 方法はできれば関数だといいのですが(データが増えてもいいように) できなければ他の方法でもいいです。 VBAなどは全くの初心者なので出来れば避けたいのですが… シート2     A    B   C    D~AB32 1  "" 2 いちご ばなな いちご りんご 3 みかん いちご ばなな いちご 4 りんご ばなな いちご みかん 5 みかん いちご ばなな りんご 6 ばなな ばなな りんご いちご : : 32 シート1(重複データなし)  A 1  "" 2  "" 3 いちご 4 みかん 5 りんご 6 ばなな 7 : : 抽出リストのデータはシート2のB2:AB32にぎっしり入っています。 宜しくお願い致します。

  • EXCEL データの検索・抽出

    シート1と2に同じようなデータがあり   A   B   C    D    E    F 1 001  100 りんご  1個  @100  \100 2 001  101 みかん 1個  @110  \110 3 002  200 なし   2個  @120  \240 4 002  201 かき   3個  @130  \360 といったように最初にコードがあり、その中に違うコードがあるのですが、これを1行ずつ見比べて無いデータ、数値が違う(個数や単価)データを抽出したいのです。 シート1と2のデータは並び方もバラバラでシート1にあるデータが2にないデータもあります(そのデータは特に必要ありません) ※無いデータと数値が違うデータは別々に抽出したいので最後にオートフィルタがかけられるようにしたいです。 EXCEL2000です。宜しくお願いします。

  • EXCEL VBA 複数列を2列にまとめる

    下記のようなデータ(列数も行数も常に変わり、固定ではない)を ┌───────────────── │ A 列  | B列   | C列   | D列 ├─────────────────── │ 1 │伝票01 │品名01 | 品名02 │品名03 ├─────────────────── | 2 │0011 │みかん │みかん | りんご ├─────────────────── │ 3 │1001 │りんご  │いちご |    ├─────────────────── │ 4 │1100 │いちご  │みかん | ぶどう  └─────────────────── ↓のように2列にまとめる方法はございますでしょうか?VBAを希望しております。   よろしくお願い申し上げます。 ┌───────────────── │ A │ B   ├───────────────── │ 1 │伝票  │品名 ├───────────────── │ 2 │0011_品名01 │みかん  ├───────────────── │ 3 │1001_品名01 │りんご    ├───────────────── │ 4 │1100_品名01 │いちご ├───────────────── │ 5 │1001_品名02 │みかん  ├───────────────── │ 6 │1100_品名02 │いちご  ├───────────────── │ 7 │1001_品名02 │みかん  ├───────────────── │ 8 │1100_品名03 │りんご  ├───────────────── │ 9 │1001_品名03 │  ├───────────────── │ 0 │1001_品名03 │ぶどう  ├─────────────────

  • EXCEL2003 複数シートから抽出したいです

    1つのブックに1ヶ月の日数分のシートがあります。(約30シート) それぞれのシートのデータは、 1水(sheet名)   A B…  P   Q   R    S  1       りんご 4つ  300円 2       みかん 3つ  500円 3       りんご 5つ  400円 4       バナナ 1つ  100円 …       …   …   … 2木(sheet名)   A B…  P   Q   R    S  1       ぶどう 4つ  300円 2       みかん 3つ  500円 3       りんご 2つ  200円 4       バナナ 1つ  100円 …       …   …   … の様なデータが入力されています。 それぞれ複数のシートのデータの中から、りんごだけを集め集計用のシートに以下の様に表示したいです。 集計用sheet   A   B   C   D 1 1水  りんご 4つ  300円 2 1水  りんご 5つ  400円 3 2木  りんご 2つ  200円       4        …  …   …   … 関数でもVBAでもいいので、複数のシートから抽出することは可能でしょうか? どなたかわかるかた教えて下さい。 よろしくお願いします。

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

    こんばんは。エクセルで困っていますので、皆さんのお力をお借りしたいと思います。 シート1 コード 商品名  金額 15   りんご  500円 33   みかん  200円 22   かりん  350円 シート2 コード 商品名  金額 15   りんご  500円 45   メロン  1200円 90   すいか  3000円 と二つのシートにそれぞれデータがあります。 そのシートを比較して、 シート3に コード 商品名  金額 33   みかん  200円 22   かりん  350円 45   メロン  1200円 90   すいか  3000円 と、一致しないデータを表示させたいと思います。 この場合、シート3にどのような関数を使用するのがいいのでしょうか? VBAでやったほうが良いのでしょうか? 色々と考えているのですが、一反頭を真っ白にして皆さんの意見を聞きたいと思います。 よろしくお願いします。

  • エクセルのデータ抽出について何かいい方法はありますか?

    表示がずれてしまってわかりにくいと思いますが(ToT)例えば…     A     B      C     ←列の番号 1   1    りんご    2月 2       いちご    4月 3   2   つくし    3月 4       かぼちゃ   8月 5     みかん    2月 6   3   かき     9月 7   4   もち     2月 8       すいか    8月   ↑ 行の番号      ・     ・     ・ というデータでは、Aのセルに入ってる数字…例えば「1」だとりんごといちごのデータで"ひとかたまり"を表しているとした場合、A列のセルに数字の入っている行のC列の部分が「2月」の"ひとかたまりデータ"を抽出したい場合どのようにしたら良いでしょうか? ちなみに上記の例だと、こうなるようにしたいです。↓    A    B      C 1   1   りんご    2月 2      いちご    4月 7   4   もち     2月 8       すいか    8月 こういったことはできるものなのでしょうか…(><)なにとぞよろしくお願いいたします

専門家に質問してみよう