• ベストアンサー

VLOOKUP 検索値を2つ設定したい

VLOOKUP関数では 例えば、 品番(検索値)で品名(被検索値)をピックアップする際、 データベースの一番左にある品番を検索値にして、 2列目の品名を出力すると思うのですが、 品名に対し品番(検索値)を2つ設定するには VLOOKUP関数では無理でしょうか。 できるだけ ひとつの表で完結させたいのですが ご存知でしたらご教示ください。

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

  • ベストアンサー
  • d3kk485
  • ベストアンサー率41% (5/12)
回答No.9

No4です。 タイプミスに気づいて参りましたが、ほかの方が直してくださってますね。 混乱させてしまったようで申し訳ありません。 if関数の真のときと偽のときの値が逆です。 =IF(ISERRROR(VLOOKUP(品番1からの検索)),VLOOKUP(品番2からの検索),VLOOKUP(品番1からの検索)) が正しいです。 おそらく =IF(ISERROR(VLOOKUP(B7;$O$6:$R$171;3;0));VLOOKUP(B7;$P$6:$R$171;2;0);VLOOKUP(B7;$O$6:$R$171;3;0)) で動くのではないでしょうか。

re_ttaro
質問者

補足

無事動きました。 ですが、空欄時のN/Aえらーを表示させたくないので、 もう一つIF関数を噛ませるか、 もしくはISBLANK関数を使って、 偽の判定の方にORを使って品番1、2の両方の判定をさせることとかってできますか?

その他の回答 (11)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.12

>IF(B7="";"";VLOOKUP(B7;$O$6:$R$171;2;0)) >元々の式が上記のもので 元のVLOOKUP数式におかしな点がありますが、数式中の引数を区切る文字はセミコロンではなくカンマですよね。 また、O列の検索値から2列目のP列の値を求めるなら、検索範囲は「$O$6:$P$171」でよいはずです。 >空欄時にN/Aエラーを表示しないようにしていたのですが、今の式にどう加えればいいでしょうか。 すでに回答がありますが、現在の空欄ではないときの式が入って言える部分に修正した数式を代入すればよいことになります。 IF(B7="";"";修正した数式) しかし、皆さんから提示されているISERROR関数は、判定式がエラーでない場合はVLOOKUP数式を2回計算する数式になっていますので、計算効率が良くありません(数式入力データ数が多くなると、メモリーの消費量や計算負荷が大きくなります)。 質問にはエクセルのバージョンが記載されていませんが、もしご使用のエクセルが2007以降のバージョンなら、IFERROR関数を使用されることをお勧めします。 IF(B7="","",IFERROR(2列目を検索するVLOOKUP数式,3列目を検索するVLOOKUP数式)) #Officeソフトはバージョンによって使用できる機能や操作法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。

re_ttaro
質問者

お礼

IFERROR関数、、、ありがとうございます。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.11

回答No.9の補足へのアドバイスです。 >ですが、空欄時のN/Aえらーを表示させたくないので、もう一つIF関数を噛ませるか、もしくはISBLANK関数を使って、 B6セルのブランク以外にもP列でもノーヒットと言う可能性もありますので両方をカバーできる方法として次の式を提案します。 =IF(ISERROR(VLOOKUP(B7;$O$6:$R$171;3;0));IF(ISERROR(VLOOKUP(B7;$P$6:$R$171;2;0));"";VLOOKUP(B7;$P$6:$R$171;2;0)) ;VLOOKUP(B7;$O$6:$R$171;3;0)) 念のためにご利用のソフトはOpenOfficeのCalcですよね。 質問するときはソフト名を明確にされると解決が早くなると思います。

re_ttaro
質問者

お礼

ありがとうございます。

  • d3kk485
  • ベストアンサー率41% (5/12)
回答No.10

=IF(B7="";"";<型番の判定式>) でできると思います。

re_ttaro
質問者

お礼

ありがとうございます。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.8

回答No.4の補足にアドバイスさせて頂きます。 >N/Aエラーになってしまします。 VLOOKUP関数で検索結果が未検出の時に出ます。 条件の文字列が対象列に存在していることを確認してください。 >何か間違っているでしょうか。 はい、間違ってます。 IF関数の中にISERROR関数が有るので正否の判断を誤っているようです。

re_ttaro
質問者

お礼

ありがとうございます。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.7

No5です。 よく見たら、私も入力ミスしてましたね。 加えて、よく見たら、IF文の Iserror対する真と偽が逆ですね。 =IF(ISERROR(VLOOKUP(B7,$O$6:$R$171,3,0)),VLOOKUP(B7,$P$6:$R$171,2,0),VLOOKUP(B7,$O$6:$R$171,3,0)) こちらが正解ですかね。

re_ttaro
質問者

補足

真と偽が逆なのですね。 IF(B7="";"";VLOOKUP(B7;$O$6:$R$171;2;0)) 元々の式が上記のもので 空欄時にN/Aエラーを表示しないようにしていたのですが、 今の式にどう加えればいいでしょうか。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>上記の式ではN/Aエラーになってしまします。 1つのVLOOKUP関数をISERROR関数で判定してエラーの時は、もう1つのVLOOKUP関数を参照する以下のような数式にしなければなりません(提示された数式はエラーの時にエラーになった数式を返す数式になっています)。 =IF(ISERROR(VLOOKUP(B7,$O$6:$R$171.3,0)),VLOOKUP(B7,$P$6:$R$171,2,0),VLOOKUP(B7,$O$6:$R$171,3,0))

re_ttaro
質問者

補足

真と偽が逆なのですね。 IF(B7="";"";VLOOKUP(B7;$O$6:$R$171;2;0)) 元々の式が上記のもので 空欄時にN/Aエラーを表示しないようにしていたのですが、 今の式にどう加えればいいでしょうか。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.5

>=IF(ISERROR(VLOOKUP(B7;$O$6:$R$171;3;0));VLOOKUP(B7;$O$6:$R$171;3;0) ;VLOOKUP(B7;$P$6:$R$171;2;0)) いやいや、 ;と,を入力間違いしていませんか。 =IF(ISERROR(VLOOKUP(B7,$O$6:$R$171.3,0)),VLOOKUP(B7,$O$6:$R$171,3,0),VLOOKUP(B7,$P$6:$R$171,2,0)) では?

re_ttaro
質問者

お礼

openofficeの形式によるものです。

  • d3kk485
  • ベストアンサー率41% (5/12)
回答No.4

下表のようなものを想定すればよろしいでしょうか? 一番簡単なのは品番入力欄を「品番1用」と「品番2用」の 2つ作ることだと思います。 品番入力にどっちを入れても大丈夫なようにしたいようなら、 ISERROR関数とIF関数を組み合わせて =if(ISERRROR(VLOOKUP(品番1の検索)),VLOOKUP(品番1からの検索),VLOOKUP(品番2からの検索)) という感じにすればいいと思います。

re_ttaro
質問者

補足

=IF(ISERROR(VLOOKUP(B7;$O$6:$R$171;3;0));VLOOKUP(B7;$O$6:$R$171;3;0) ;VLOOKUP(B7;$P$6:$R$171;2;0)) やりたいことを汲み取っていただきありがとうございます。 B7に検索値を入れ、O6からR171までの対応表を画像のように作った場合、 品番2の対応表はずらして(品番1の部分は除いて) 非検索対象列が手前に1列ずれるというふうになると思うのですが、 上記の式では N/Aエラーになってしまします。 何か間違っているでしょうか。

回答No.3

ご参考になれば http://global-wing.com/activity/vlookup_check.html 一致するデータがある(重複がある場合はVLOOKUPが使えないので http://www.eurus.dti.ne.jp/~yoneyama/Excel/waza/fukusu_data.html その他の方法として http://www.geocities.jp/chiquilin_site/data/051029_more_conditions2.html というよううな方法があるようです。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

品番(検索値)を2つ設定した場合、両方ともヒットした場合どのような値を表示するのでしょう 検索値ごと(2つのセルに検索値を入れる)にVLOOKUP関数を用意(2つのセルに検索値ごとのVLOOKUP関数を記載する)して、その2つ関数を入れたセルの値に対して第3のセルで結果を出すという考えではいかがでしょう。