誕生日にもらった意外なもの

エクセルでVLOOKUP関数を使ってます。
一般的には、たとえば製品番号(数字)を入力すると
製品名(文字列)を引いてくるという使い方でVLOOKUP
関数を設定すると思いますが、製品名を入力すると、製品番号を引いてくるように設定しようと思ったらうまくできません。
何かよい方法はありますか?

A 回答 (4件)

こんばんは!


No.1さんがすでに的を射た回答をされていますので
参考程度に目を通してみてください。

↓の画像で説明すると

左側の表が元データです。

右側の上の表は「VLOOKUP関数」を使っています。
下側の表は「INDEX関数」と「MATCH関数」の併用です。

No.1さんの回答どおり、
VLOOKUP関数は一番左側の列を検索して、左から何列目のデータを返すか?
という関数で
E2セルに
=IF(D2="","",VLOOKUP(D2,$A$2:$B$9,2,0))
という数式を入れてオートフィルで下へコピーすると画像のような漢字になります。

今回の場合はVLOOKUP関数では無理なので
E7セルに
=IF(D7="","",INDEX($A$2:$A$9,MATCH(D7,$B$2:$B$9,0)))
という数式を入れて、オートフィルで下へコピーしています。

尚、元データは9行目までの数式ですので
データ量によって範囲指定はアレンジしてみてくださいね。

そして、余談ですが
数式内の最後にある「0」とか「1」は
0=FALSE で、「完全に一致する」という意味です。

どうも長々と失礼しました。m(__)m
「エクセルのVLOOKUP関数」の回答画像3
    • good
    • 0
この回答へのお礼

画像付きで、わかりやすく解説していただき、よく判りました。
ありがとうございました。
VLOOKUPだけでは、駄目だということがよくわかりました。

お礼日時:2009/08/30 06:15

NO1の方の推定(列順の違い)通りだとして、他の方法では


A列が製品番号でB列が製品名だとすれば
C列を補助列として使い =An  nは同一行を設定し必要分コピー
としてVLOOKUP関数の範囲をB,C列に指定すれば
簡単にできます。

辛口になりますが
>エクセルでVLOOKUP関数を使ってます。
ならば、まずはhelpを参照することをお勧めします。
ここに質問をしなくても解決できたものと思います。

VLOOKUP関数は指定範囲の最も左側の列を検索対象とします。
(helpにそう書かれています。)
従ってつぎの部分は
>製品名を入力すると、製品番号を引いてくるように設定
列の順番が製品名→製品番号となっていることが必要という事です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
helpもみましたが、helpをみてもよくわからないほどの
初心者だと言うことが良く判りました。
vlookを使えていた気になってました。。。
良い勉強になりました。

お礼日時:2009/08/30 06:20

VLOOKUP関数では、最左列を検索して、右側何列目かのデータを得るのだから、検索列より左側のデータは得られない。


この場合、下記のように関数を使う。
1.
=INDEX(製品番号・製品名を含む表の範囲,MATCH(製品名,製品名の列),表の中で製品番号の列が何番目か)

または、
2.
=OFFSET(基準セル,MATCH(検索値,検索列)-1,基準セルからの列間隔)
ここで、
MATCH(検索値,検索列)-1:基準セルからの行間隔。基準セル=0
基準セルからの列間隔:基準セル=0。右側=+、左側=-。

添付図は、
H3:=INDEX(B3:E8,MATCH("ccc",E3:E8),1)
I8:=OFFSET($B$3,MATCH("ccc",E3:E8)-1,0)
としたもの。両方同じ「333」になる。
「エクセルのVLOOKUP関数」の回答画像2
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
INDEXやMATCH関数を画像付きで解説して頂き、
わかりやすかったです。
参考にさせて頂きます。

お礼日時:2009/08/30 06:36

>一般的には、たとえば製品番号(数字)を入力すると


>製品名(文字列)を引いてくるという使い方でVLOOKUP
そんな事ではありませんよ。
文字列とか数値とか関係ありません、指定した範囲の一番左の列を検索して、右隣何列目と指定します。
元データが 製品名 製品番号 となっていればVLOOKUP関数が使えますが
元データが 製品番号 製品名 でしたら、少し工夫が必要です。
INDEX関数とMATCH関数を組み合わせて作ります。
=INDEX(製品番号の列,MATCH(検索値、製品名の列,FALSE))
詳しくはそれぞれの関数のHelpを参照してみてください。
    • good
    • 0
この回答へのお礼

表現方法が悪くて申し訳ありません。
>元データが 製品名 製品番号 となっていればVLOOKUP関数が使えま>すが
>元データが 製品番号 製品名 でしたら、少し工夫が必要です。
>INDEX関数とMATCH関数を組み合わせて作ります。
やはり、製品番号 製品名の順番で並んでいるときは、違う関数を組み合わせて使うのですね。

回答ありがとうございました。

お礼日時:2009/08/29 22:40

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