- ベストアンサー
エクセルのvlookupについて
vlookupの機能はコードをもとにしてデータを他から引っ張ってくるといった作業をしたいときに使っています。この機能を利用して、二つ以上のコードが一致すればそのデータを引っ張ってくるというようなことは可能でしょうか。できましたらどのような数式を入れればよいか、抽象的な質問ではありますがアドバイスお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
vlookupは範囲の一番左が一致するものを抽出する関数なので データが二つに分かれていると基本的には出来ません。 解消法としては コード1をB列に コード2をC列に データをD列に そして、A列に数式を入れます。 「=B&C」 これで、二つのデータが一つとして認識されます。 次に、データが表示される場所も同じようにデータを一つにします。 コード1をG列に コード2をH列に データをI列に そして、F列に数式を入れます。 「=G&H」 「=vlookup(H,A:D,4,false)」 こんなのでは駄目でしょうか?
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
VLOOKUP関数は、1列のデータで、初めて条件に合致した行のデータしか取れませんので、質問のケースではできません。 (1)中間作業列を使い 2列を結合した文字列を作り、その結合データ情報列を対象にVLOOKUP 関数を使えばできます その際#4のご回答に有るように、条件を考える2列のデータを最大巾で固定桁にして(特に第2列)、数であればTEXT関数で、文字列であれば詰め物をして、結合する必要があります。この点考慮せず、&で直接結合している回答もありますが、危険含みです。 (例)12+123と121+23が同じにならないようにするということ。 ーーーーーー (2)VLOOKUPは捨てて、MATCH-MATCH関数ならできます。 ただし条件の第1列でソートしてよいケースに限ります。 下記では、A列a,b,c でソートされ、その塊にまとまっています。 第2列ではソートされていることは条件ではありませんが、普通はソートされるでしょう(表が見やすいから)。この条件は、実際上ではそんなに障害にはならないと思います。 また条件に合うものは1つだけ拾うというものに限ります。複数拾うわけには行きません。 例データ A列 B列 C列 a 002 q a 003 w a 005 e a 006 r a 008 y b 003 u b 005 i b 007 rrr c 003 p c 008 tyu c 009 t 条件は、D1とE1に入れるとします。 E1 b D1 003 とします。 結果を出したいセルに =INDEX($C$1:$C$100,MATCH(E1,OFFSET($B$1,MATCH(D1,$A$1:$A$100,0)-1,0,10,1))+MATCH(D1,$A$1:$A$100,0)-1) と入れます。 $100は実際データ数より多めに行数を採っていい(採ってください)ということです。 結果は u 3 条件以上も同じ理屈でできますが、式が長くなって、書く気がしません。2条件まででしょう。 式の意味は第1列で条件に合った行をMATCHで見つけ、それより下の範囲で、第2条件の初出を見つけるというものです。
- mshr1962
- ベストアンサー率39% (7417/18945)
元になるデータの左端に =A1&B1 =A1&TEXT(B1,"書式") ※コードに数値がある場合はTEXT関数で桁あわせが必要です。 のようにコードを連結した数式を用意 =VLOOKUP(X1&Y1,元のデータ,列,検索方法) で表示させる。
- gab_snow
- ベストアンサー率30% (3/10)
こんばんは >二つ以上のコード とは (1)条件が二つ それとも (2)検索の結果が二つ なのでしょうか? (1)であれば検索対象列を二つ結合した隠し列でも設ければ vlookupで可能だと思います。 (2)の場合はcountifを使ったほうが楽かと。
- noraneko66
- ベストアンサー率33% (13/39)
列と行が一致すれば引っ張ってくるというものでしょうか? それとも同じ列or行から2つの条件から引っ張ってくるのでしょうか? もし行よ列から2つの条件を満たすものを引っ張ってくるのであれば INDEX関数はどうでしょうか? 参考になるかわかりませんがURLをのっけておきます。