A.xlsのSheet1に1万行×3列のデータがあります。
ID,NAME,STOCK
001,CANDY,10
002,ICE,20
003,MELON,2
...
Sheet2にIDのみのデータがA列に1000行書かれています。
001
005
010
...
Sheet2のA列に書かれているIDとSheet1のA列に書かれているIDを比較して、Sheet2のIDに含まれているIDのみをSheet1から抜き出したいという作業を行いたいです。VBAなどを使わずに関数だけでできないでしょうか?つまり、上の例でいうと、
001,CANDY,10
のみ抜き出すといった感じになります。
Sheet2のA列の1行目からIDが羅列されてるとすると、
Sheet2のB1に「=VLOOKUP(A1,Sheet1!A:C,2,FALSE)」
Sheet2のC1に「=VLOOKUP(A1,Sheet1!A:C,3,FALSE)」
を入力して、2列目以降はコピーしてください。
Sheet2のA列のIDの該当するB列、C列の値が表示されます。
単純に考えてVLookupですが、質問文の意味だとSheet2のIDがSheet1のIDにあるとは
限らないということですから、その場合のエラーを入れて次の数式です。
Sheet2の2列目
=IF(ISNA(VLOOKUP(A1,Sheet1!A:C,2,FALSE)),"",VLOOKUP(A1,Sheet1!A:C,2,FALSE))
Sheet2の3列目
=IF(ISNA(VLOOKUP(A1,Sheet1!A:C,2,FALSE)),"",VLOOKUP(A1,Sheet1!A:C,2,FALSE))
ただし、関数ということなので1万行になると多少のラグがあるかもしれませんが。
それが気になるならVBAということになります。
こんにちわ。
既に他の方が回答されていると思いますがVlookupという関数で可能です。
sheet2のB列に以下の関数を入れてください。
=VLOOKUP(A1,Sheet1!$A:$C,2,0)
これで、sheet2のA1に入力されているIDにひも付いたNAMEの値が表示されるはずです。
そして、sheet2のC列に、以下の関数を入れてください。
=VLOOKUP(A1,Sheet1!$A:$C,3,0)
これで、STOCKの値が引っ張れるはずです。
あとは上の2つの関数をsheet2の1000行分コピーすればOKです。
コメント(1件)