• ベストアンサー

LOOKUP関数で検査値が見つからない場合の問題

LOOKUP関数を使用した場合、検査値 が見つからないと、検査範囲 に含まれている 「検査値 以下の最大の値」が使用されますが。 見つからない場合、エラーを返すようにするにはどうすればよいでしょう? 例えば以下のようなシートがあったとします。 1)製品カテゴリシート A       |B カテゴリ番号  |カテゴリ名 105      |コネクタ 106      |ケーブル 201      |パソコン 2-1)データシート A       |B カテゴリ番号  |カテゴリ名 1 105      | 2 150      | 3 105      | 4 105      | 2-1)のデータシートのB列にカテゴリ名を引き出すために以下のような関数を記述したとします。 -------------------------------------------------------- LOOKUP(B2,製品カテゴリシート!A:A,製品カテゴリシート!B:B) -------------------------------------------------------- すると以下のような結果が返ってきてしまいます。 2-2)データシート A       |B カテゴリ番号  |カテゴリ名 1 105      |コネクタ 2 150      |ケーブル←"入力ミスなのにケーブルと表示" 3 105      |コネクタ 4 105      |コネクタ 存在しない"150"番があたかも存在するかのようです。 これでは入力ミスに気づきません。 以下のようにエラーを返す方法はありませんか? 2-3)データシート A       |B カテゴリ番号  |カテゴリ名 1 105      |コネクタ 2 150      |#N/A 3 105      |コネクタ 4 105      |コネクタ

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

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.2

"LOOKUP"関数には、ご希望のような機能がありませんから、その代わりに、"VLOOKUP"関数を使います。 VLOOKUP(検査値,範囲,列番号[,検索の型]) 『検査値』と『範囲』の指定方法は、"LOOKUP"関数と同じです。 『列番号』は取り出したいデータが入力されている列を、『範囲』の一番左の列を1として数えて、指定します。 『検索の型』は"TRUE"または"FALSE"で指定します。  省略した場合、または"TRUE"を指定した場合には、"LOOKUP"関数と同様の検索方法が取られます。『範囲』内を昇順に並べておく必要があります。  "FALSE"を指定した場合には、検査値と一致する値が見つからない時にはエラー(#N/A)を返します。『範囲』内を昇順に並べる必要はありません。 =VLOOKUP(A2,製品カテゴリシート!A:B,2,FALSE)

hikson
質問者

お礼

有難うございます。お陰でよく分かりました。

その他の回答 (2)

  • comv
  • ベストアンサー率52% (322/612)
回答No.3

こんばんは =IF(LOOKUP(A2,製品!$A$2:$A$4)=A2,LOOKUP(A2,製品!$A$2:$A$4,製品!$B$2:$B$4),"エラー") では如何でしょうか!

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

LOOKUP(B2,製品カテゴリシート!A:A,製品カテゴリシート!B:B) の代わりに(B2はA2でしょうか) =VLOOKUP(A2,製品カテゴリシート!A:B,2,FALSE) としてみたらどうでしょうか。

hikson
質問者

お礼

有難うございます。使わせていただきました。

関連するQ&A

専門家に質問してみよう