[[20121129205441]] 『LOOKUPでエラーになる…』(エクセリオン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『LOOKUPでエラーになる…』(エクセリオン)
 LOOKUPを使い表示させたいのですが、#N/Aか0しか表示されません。
 関数をよく理解していない為、原因が分からないのでご協力願います。
 sheet1にベンダーコード・ベンダー名・商品番号・商品名が下記のように入力されています。
   ベンダーコード ベンダー名 商品番号 商品名
 1    10      あ     100    か
 2    20      い     200    き
 3    30      う      300    く
 4    40      え     400    け
 5    50      お     500    こ

 sheet2に商品の詳細とベンダーコード・製造者名が下記のように入力されています。
  商品詳細 ベンダーコード 製造者名
 1            zzzzz        10           A
 2            xxxxx        10           B
 3            ccccc       10           C
 4            vvvvv        10           D
 5            bbbbb        10           E
 6            nnnnn       20           F

 sheet3にベンダーコード・ベンダー名・商品番号・商品名・製造者名が「LOOKUP」で算出し表示されます。
   ベンダーコード ベンダー名 商品番号 商品名 製造者名
 1    10      あ     100   か   A
 2        10      あ     101   さ      G
 3        10      あ     102   た      H
 4        10      あ     103   な      I
 5        10      あ     104   は      J

 sheet3の商品番号が入力されると、
 =LOOKUP(C1,sheet1!C:C,sheet1!A:A)  ベンダーコードが表示
 =LOOKUP(A1,sheet2!A:A,sheet1!C:C)  製造者名が表示

 商品番号からベンダーコード・製造者名を出したいのですが、#N/Aか0としか返ってきません。
 どうしてでしょうか??
 商品番号をLOOKUPではなく手入力した場合は正しく表示されます。
 LOOKUPを用いるのが間違いなのでしょうか…?
 エクセル等弱いもので原因が分かりません。
 説明が分かりづらく(直しても表が直らなく…)申し訳ありませんが、よろしくお願います。


 こんばんは
 LOOKUPのヘルプには
検査値が見つからない場合、検査範囲内で検査値以下の最大値が、一致する値として使用されます。 
検査値が検査範囲に含まれる最小値よりも小さい場合は、エラー値 #N/A が返されます。 
と書いてあります。
また、
LOOKUP 関数が正しく機能するように、検索されるデータを昇順で並べ替える必要があります。昇順で並べ替えられない場合は、VLOOKUP、HLOOKUP、または MATCH の各関数の使用を検討します。
とも書いてありますので、MATCHを使った方がいいと思います。

 Sheet3のセルA1に
=IF(ISNA(MATCH($C1,Sheet1!$C:$C,0)),"",OFFSET(Sheet1!A$1,MATCH($C1,Sheet1!$C:$C,0)-1,0))
としてA1以下、B1以下、D1以下にコピーして下さい。

 ただし、今の条件では製造者名は特定出来ないので、E列に設定する式は作れないです。
(ウッシ)

ウッシ様ありがどうございます。遅くなりすみません。

>LOOKUP 関数が正しく機能するように、検索されるデータを昇順で並べ替える必要があります。昇順で並べ替えられない場合は、VLOOKUP、HLOOKUP、または MATCH の各関数の使用を検討します。
とも書いてありますので、MATCHを使った方がいいと思います。

一応商品番号順にはなっています。

>Sheet3のセルA1に…
入力しましたが、何も表示されません(汗

=IF(ISNA(MATCH($C1,Sheet1!$C:$C,0)),"",OFFSET(Sheet1!A$1,MATCH($C1,Sheet1!$C:$C,0)-1,0))
                  ↑商品番号          ↑ベンダーコード   ↑商品番号

という事で良いんですよね?

>ただし、今の条件では製造者名は特定出来ないので、E列に設定する式は作れないです。

どうすれば、製造者名が出る式が出来ますか?

よろしくお願い致します。

(エクセリオン)


 >どうすれば、製造者名が出る式が出来ますか? 

 ベンダーコード(10)からだけでは、製造者名がA、B、C、D、E と5社もあるので特定できないです。

 エクセリオンさんはどうしてベンダーコード(10)から、1社に絞れるハズだとお考えですか?

 そこをご説明いただかないと、回答側としてはどうしたらいいものか分かりません。

 (半平太) 2012/12/03 23:38

 こんばんは
 提示されたシートの内容でテストしてますか?
 こちらでは結果が表示されています。
 Sheet1に無い商品番号をSheet3に入力したら何も表示されません。

 製造者名については 半平太さんのご指摘の通りです。
 Sheet2の見直しが必要です。
(ウッシ)


 横から失礼します
 質問文から疑問点があります、整理して下さい

 質問文から一部抜粋
 >sheet3の商品番号が入力されると、
 >=LOOKUP(C1,sheet1!C:C,sheet1!A:A)  ベンダーコードが表示
 >=LOOKUP(A1,sheet2!A:A,sheet1!C:C)  製造者名が表示
 >商品番号からベンダーコード・製造者名を出したいのですが、#N/Aか0としか返ってきません。
 >どうしてでしょうか??
 >商品番号をLOOKUPではなく手入力した場合は正しく表示されます

 手入力の場合正しく表示されるのですから、商品番号をLOOKUP関数でどの様に求めているのでしょう? 
 求めた値と sheet1!C:C の値が 文字・数値の違いがあるのではないですか?

 >=LOOKUP(A1,sheet2!A:A,sheet1!C:C)  製造者名が表示
 この式は正しいですか?
 セルA1はベンダーコードで、sheet2!A:Aは商品詳細 ですが正しいですか?
 また、sheet1!C:Cは商品番号ですが これで 製造者名が表示されますか?
 正しい答えになるかどうかは別にして =LOOKUP(A1,sheet2!B:B,sheet2!C:C)

 >商品番号からベンダーコード・製造者名を出したいのですが、#N/Aか0としか返ってきません。
 エラーになるか、何らかの値が出ると思われますが 本当に0がでるのですか?

 sheet3の 商品番号の求め方、
 製造者名が表示の式 =LOOKUP(A1,sheet2!A:A,sheet1!C:C) が正しいかどうか?
 本当に0がでるのですか?
 この3点について回答いただければと思います


半平太様・ウッシ様・By様

>ベンダーコード(10)からだけでは、製造者名がA、B、C、D、E と5社もあるので特定できないです。

言われてみればそうですね…すみませんでした。

ウッシ様の計算式・By様よりご指摘頂いた所を直し、sheet2を作り直し表示が出来ました。

色々ありがとうございました。

(エクセリオン)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.