• ベストアンサー

エクセルのvlookupについて

vlookupの機能はコードをもとにしてデータを他から引っ張ってくるといった作業をしたいときに使っています。この機能を利用して、二つ以上のコードが一致すればそのデータを引っ張ってくるというようなことは可能でしょうか。できましたらどのような数式を入れればよいか、抽象的な質問ではありますがアドバイスお願いします。

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

  • ベストアンサー
  • kori_kori
  • ベストアンサー率40% (51/127)
回答No.2

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/17068)
回答No.5

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% (7418/18948)
回答No.4

元になるデータの左端に =A1&B1 =A1&TEXT(B1,"書式") ※コードに数値がある場合はTEXT関数で桁あわせが必要です。 のようにコードを連結した数式を用意 =VLOOKUP(X1&Y1,元のデータ,列,検索方法) で表示させる。

全文を見る
すると、全ての回答が全文表示されます。
  • gab_snow
  • ベストアンサー率30% (3/10)
回答No.3

こんばんは >二つ以上のコード とは (1)条件が二つ それとも (2)検索の結果が二つ なのでしょうか? (1)であれば検索対象列を二つ結合した隠し列でも設ければ vlookupで可能だと思います。 (2)の場合はcountifを使ったほうが楽かと。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

列と行が一致すれば引っ張ってくるというものでしょうか? それとも同じ列or行から2つの条件から引っ張ってくるのでしょうか? もし行よ列から2つの条件を満たすものを引っ張ってくるのであれば INDEX関数はどうでしょうか? 参考になるかわかりませんがURLをのっけておきます。

参考URL:
http://www.kenzo30.com/ex_kisotyu/ex_ks_tyukyu9_9_7.htm#検索/行列関数(INDEX関数)
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのVLOOKUP関数について教えてください。

    エクセルのVLOOKUP関数について教えてください。 まずは、添付画像を参照下さい。 元データ(B2:D6)に対し、C10でVLOOKUP関数を以下の通り使用しました。 =VLOOKUP(B10,B2:D6,2,FALSE) この場合、新品番57010に対し、旧品番が3パターンありますが、VLOOKUP を使用すると、その3パターンのうちいずれか(数値の小さいもの?)を勝手に 選択してしまうため、困っています。 このような一つの対象に対し、複数の対象が一致するものについては、 エラーの出るようにしたいのです。(作業上のミスを防ぐため) そういったことは可能でしょうか。 あるいは関数の特性上仕方のないことなのでしょうか。 説明下手ですみませんが、よろしくお願いします。

  • VLOOKUP関数で「#N/A」が出てしまう。

    Aのファイルの中にあるコード(英数字8ケタ)の中から、Bのファイルにあるコードに一致しているものをVLOOKUP関数で探し当てようとしています。 Bのファイルに数式を入力しましたが、すべて「#N/A」が出てしまいます。 数式は間違っていません。 念のため、CとDという別なサンプルを作り同じ数式を入力してみたら、それはきちんとできました。 なぜAとBでは出来ないのか解りません。 考えられる原因は何でしょうか?

  • エクセルの「IF+VLOOKUP」に関してのよくある問題で、意味のわからない相対参照があります

    「1.セル【C18】にセル【B18】の「商品コード」に対応する「商品名」を返す数式を入力して下さい。「商品一覧」の表を参照すること。 次に、「商品コード」が入力されていない場合は、「商品名」にエラーが表示されないように数式を修正して下さい。(シートに表があり、IF+VLOOKUPを使う問題です) 2.セル【C18】の数式をもとに請求書の表を完成させて下さい」(←「【C18】の下の行も同じように、商品コードから商品名を表示させれるように完成させなさい」っていう問題です) 上記のような問題があったのですが、 数式を入力して下にオートフィルして 完成させたのですが、【問題の解答】を見た限りでは 「セル【C18】を「=IF($B18="","",VLOOKUP($B18,$H$18:$J$29,2,FALSE))」と修正する」 と書いてありました。 ですが、数式の「$B18」の部分で「列を固定にする」 意味はあるのでしょうか? 「$」はなくてもちゃんと機能してますし、 表も完成してるように思うのですが・・・ あと、これは商品コードが空白の場合にはエラーが 出ないのでいいのですが、商品コードとは関係ない 文字列も入れた場合(間違った文字列を入れた場合)に エラーがでないようにする事もできますでしょうか?

  • VLOOKUP関数について

    VLOOKUP関数についての疑問なのですが、 ...........A...............B 1..品名コード|.品名..| 2..A123...........|..お茶.| 3..A456...........|...水....| 4..A789...........|..お酒.| というデータがあったとします。 VLOOKUP関数を使用して、 このデータから 品名コードを入力して品名を検索することは できるのですが、品名を入力して品名コードを検索できません。 データのA列とB列の位置を入れ替えれば検索が可能になりますが…。 VLOOKUP関数は検索するキーのデータが一番左側にないと機能しないのでしょうか? どなたかご教授お願いいたします。

  • VLOOKUPで求めた数値をさらにVLOOKUPで

    エクセル2010を使用しています。 VLOOKUPで求めた数値をさらにVLOOKUPの検索値にしたいです。 Sheet1のB2のセルにIDを入力したら Sheet2のA1からAL500の中のデータから 自動でSheet1のC2からF2まで値が入るように VLOOKUPを使用して表を作りました。 Sheet1のF2には、その会員の紹介をしてくれた別の方のIDが 自動で反映されるんですが さらにF2に反映されたIDをもとに G2にSheet2の中からデータを拾い出すことは不可能なのでしょうか? 何度やってもエラーになってしまいます。 表の上ではF2には、紹介者のIDが反映されているのですが 実際には数式がはいっているので 検索値としては使用出来ないのでしょうか? もし可能な方法があれば教えてもらえれば助かります。 お願いします。

  • エクセルマクロでvlookupが上手く出来ない

    お世話になります。 現在、エクセルで読み込んだエクセルファイルのセル上のデータ と変換表のデータが一致したときに変換データを返すというマクロ を組んでいるのですが上手く動きません。 具体的には、 .Cells(W_ROW, 39) = xlAPP.WorksheetFunction.VLookup(WS_ORGN.Cells(R_ROW, 4), Worksheets(KANJO_CODE).Range("A2:D24297"), 4, False) という内容で、エラーで Err.Number 9 : インデックスが有効範囲にありません。 となってしまいます。 かなり困っています。よろしくお願いします。

  • EXCELでVLOOKUPでデータを検索、引継ぎをしたい

    こんばんは。今、困ってます。Sheet1で、 店コード   商品コード   担当名 01      12345      たなか 01      12350      すずき 01      12355      たなか 02      12360      こんどう という元データが出来ていて、Sheet2で、 店コード   商品コード   担当名 01      12345 01      12348 01      12350 という別ファイルがあり、同じ商品コードの場合は、 Sheet1の元データから、担当名をひっぱりたいと思います。 そこで、担当名の欄に =IF((VLOOKUP(B1,Sheet1!B:M,2))="","",(VLOOKUP(B1,Sheet1!B:M,2))) と入力したんですが、 商品コードが 12346 でも 担当名に たなか と 出てしまったりするので、困ってます。 商品コードが一致しているときだけ、担当名を表示させるには、どうしたらよいのでしょうか? よろしくお願いします。

  • 【エクセル】VLOOKUPが上手くいきません。。。

    VLOOKUP関数がうまくいかないので教えてください。 下のような表になっています。    A     B    C    D    E    F 1  番号  名前               コード 2 11-2345  ABC  11  #N/A  11  あああ 3 22-3456  DEF  22  #N/A  22  いいい  4 33-4567  GHI  33   #N/A  33  ううう 5 44-5678  JKL  44        44  えええ 6 ・・・・ ・・・               55  おおお 7 ・・・・ ・・・               66  かかか A、B列はがもとから打ち込んであるデータです セルC2は =LEFT(A2,2) でA列のハイフンの前を表示しています。 セルD2に =VLOOKUP(C2,$E$2:$F$7,2,FALSE) を入れると#N/Aが表示 されます。ちなみに、セルC2にLEFT関数ではなくて、数字をそのまま、 11と入力すると、セルD2に「あああ」と表示されます。どこがいけない のでしょうか? $E$2:$F$7はC列の二桁の数字に対応するコードの表になっています。 エクセル2003を使っています。

  • VLOOKUPが効かない(>_<)

    昨日出来たVLOOKUPの作業が今日は出来なくなりました。 そんな事ってありえますか? 使用するデータは異なりますが、VLOOKUP関数の条件部分は全く変えてません。 一致しない場合のエラー表示もなく、セルには関数式が表示されるだけです。 仕事とで息詰まって残業しています。どなたかお助けを~”(ノ><)ノ (課題内容) シート1には電話番号 シート2には電話番号と月額使用料 VLOOKUPで1と2を付け合わせ電話番号が合致する場合はシート1に月額使用料を記載したいです。

  • VLOOKUPからの変換

    エクセルで入力作業短縮のためVLOOKUP関数を利用しています。こちらを利用して作成した表のデータ効率よくを値に直す方法はありますか?

専門家に質問してみよう