- ベストアンサー
データの抽出方法とマッチングについての質問
- エクセルでのデータ抽出方法とマッチングについて教えてください。
- 異なるファイルに保存されたデータAとデータBをマッチングする方法を知りたいです。
- データBの該当する列をデータAの特定の列にコピーする方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VLOOKUP関数は,元のご相談に説明されていたように検索のキーとなる列(△の列)の「右側」にある■のデータを参照するのに使います。 補足じゃなく実は元のご相談の説明がウソで,正しくはキーとなる△列の「左側」のデータを参照したいというときは,別の関数を使わなければいけません。 #補足 元のデータAでキーとなる△列を「表の左端のA列」に移動または複製して置いておけば,VLOOKUP関数で計算できます。その場合の計算式は,先の回答でお話ししたのと全く同じになります。このやり方が,エクセルでは一番簡単な数式で出来ます。 #補足 追加のご質問が来る事を想定していませんでしたので前回回答では言いませんでしたが,ご相談投稿では必ずご利用のソフト名は元より,ご利用のソフトのバージョンまでキチンと明記することを憶えてください。ご利用のソフトのバージョンによって,もっと簡単にできる場合もあります。 さて,実際にやりたかったのは。 元のデータのO列から,H列のデータを検索します。 また追加ご質問でもシート名とか相変わらずナイショのままなので, Sheet1に元データのA Sheet2に作成したい表のB があります。 シート2のI1には =IF(COUNTIF(Sheet1!$O:$O,$H1),INDEX(Sheet1!A:A,MATCH($H1,Sheet1!$O:$O,0)),"") と記入し,右に下にずらっとコピーして埋めておきます。 #補足 元のデータ(A)が「非常に沢山の行数がある」場合,シート2のI列に上記式のMATCH関数の部分だけ取り出してまず並べておき,J列以降に,やはり上述した数式の残りの部分でI列で計算した数字とINDEX関数を使いデータAの該当するデータを引っ張ってくると,計算が早くなります。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
どの列のデータが一致していたら「同じ行」と判定するか,によってやり方が変わります。 今回は >△の行のマッチングを行い という事なので,一番シンプルにVLOOKUP関数で計算します。 手順: A,B共に△がC列であるとして。 データAはSheet1に データBはSheet2に それぞれあるとして。 Sheet2(データB)のD1に =IF(COUNTIF(Sheet1!C:C,C1),VLOOKUP(C1,Sheet1!C:D,2,FALSE),"") と記入し,リスト下端まで埋めておきます。 言わずもがなですが,シート名などは正しく修正して計算させます。 それぞれが別ファイルにあるのでしたら一回同じファイルにシートを移動して束ねてから上述のようにして計算させ,その後元のファイルにシートを戻してやると,間違い無く作成できます。 教わらなくても出来るなら,もちろん別ブックのまま計算しても構いません。
補足
補足させてください。 詳しく書くと 元のデータA(抽出するに当たり元となるデータは) A・・・・・O 1 2 3 ・ ・ ・ とあり、 もう、片方のデータBは A・・・・・・H 1 2 3 ・ ・ ・ とありH列の中に、O列の中に重複するデータがある場合、 データBのI 列以降にデータA O列の中で重複している行(A~O) をコピーさせたいのです。 関数式を教えていただけませんでしょうか。。。 よろしくお願いいたします。
- aokii
- ベストアンサー率23% (5210/22062)
vlookup関数を使ってはいかがでしょう。
お礼
ありがとうございました。 ちょっと、使う用途上、色々と伏せさせていただきました。すみません。 以後、気をつけます。