Excel 2003について教えてください。


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
のみ抜き出すといった感じになります。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/06/01 11:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:beatgoeson No.1

回答回数128ベストアンサー獲得回数14

ポイント27pt

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列の値が表示されます。

id:SALINGER No.2

回答回数3454ベストアンサー獲得回数969

ポイント26pt

単純に考えて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ということになります。

id:shadow-dragon No.3

回答回数12ベストアンサー獲得回数0

ポイント27pt

こんにちわ。

既に他の方が回答されていると思いますが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です。

  • id:SALINGER
    失礼。気づいたと思いますが、3列目が2列目と同じ数式になってました。2→3です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません