アプリ版:「スタンプのみでお礼する」機能のリリースについて

VLOOKUP関数では

例えば、
品番(検索値)で品名(被検索値)をピックアップする際、
データベースの一番左にある品番を検索値にして、
2列目の品名を出力すると思うのですが、

品名に対し品番(検索値)を2つ設定するには
VLOOKUP関数では無理でしょうか。

できるだけ
ひとつの表で完結させたいのですが
ご存知でしたらご教示ください。

A 回答 (12件中1~10件)

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))
で動くのではないでしょうか。

この回答への補足

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

補足日時:2013/09/15 00:44
    • good
    • 0

>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ソフトはバージョンによって使用できる機能や操作法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/09/16 01:35

回答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ですよね。
質問するときはソフト名を明確にされると解決が早くなると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/09/16 01:35

=IF(B7="";"";<型番の判定式>)


でできると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/09/16 01:36

回答No.4の補足にアドバイスさせて頂きます。



>N/Aエラーになってしまします。
VLOOKUP関数で検索結果が未検出の時に出ます。
条件の文字列が対象列に存在していることを確認してください。

>何か間違っているでしょうか。
はい、間違ってます。
IF関数の中にISERROR関数が有るので正否の判断を誤っているようです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/09/16 01:36

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))
こちらが正解ですかね。

この回答への補足

真と偽が逆なのですね。

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

補足日時:2013/09/14 22:59
    • good
    • 0

>上記の式では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))

この回答への補足

真と偽が逆なのですね。

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

補足日時:2013/09/14 22:59
    • good
    • 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))



いやいや、 ;と,を入力間違いしていませんか。

=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))

では?
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/09/14 22:53

下表のようなものを想定すればよろしいでしょうか?



一番簡単なのは品番入力欄を「品番1用」と「品番2用」の
2つ作ることだと思います。

品番入力にどっちを入れても大丈夫なようにしたいようなら、
ISERROR関数とIF関数を組み合わせて

=if(ISERRROR(VLOOKUP(品番1の検索)),VLOOKUP(品番1からの検索),VLOOKUP(品番2からの検索))

という感じにすればいいと思います。
「VLOOKUP 検索値を2つ設定したい」の回答画像4

この回答への補足

=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エラーになってしまします。

何か間違っているでしょうか。

補足日時:2013/09/14 07:44
    • good
    • 0

ご参考になれば


http://global-wing.com/activity/vlookup_check.html

一致するデータがある(重複がある場合はVLOOKUPが使えないので
http://www.eurus.dti.ne.jp/~yoneyama/Excel/waza/ …

その他の方法として
http://www.geocities.jp/chiquilin_site/data/0510 …

というよううな方法があるようです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!