• ベストアンサー

【Excel】VLOOKUP関数について

Excel2003を使用しています。 B列にコードNo.、D列に会社名が入力されている表(1)があります。 表(1)とは別のシートで、B列にコードNo.を入力すると、D列に会社名が表示されるように、VLOOKUP関数で検索範囲を表(1)としてD列に数式を入力しています。 これを逆に、D列に会社名を入力したら、B列にコードNo.が表示されるようにしたいのですが、B列に数式を入力する際、表(1)はこのまま利用できるのでしょうか?

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

  • ベストアンサー
noname#176215
noname#176215
回答No.2

その場合 INDEX関数と MATCH関数を組み合わせます。 =INDEX('表(1)'!A1:A10,MATCH(D1,'表(1)'!D1:D10,)) こんな感じです。

rx-z5815
質問者

お礼

今回のような場合、INDEX関数とMATCH関数を組み合わせることでできるとは、知りませんでした。大変参考になりました。 アドバイスありがとうございました。

その他の回答 (4)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.5

INDEXだけでなくOFFSETやINDIRECT(ADDRESS(…))などでも MATCHと組み合わせればいけますよ http://oshiete.coneco.net/kotaeru.php3?q=2570100http://oshiete.coneco.net/kotaeru.php3?q=2569996 での私の発言に式が掲載されていると思いますので 参照してみてくださいな そうそう そう言えばアドインの中にLOOKUPのウイザードがあって こういう時用の式を自動で作ってくれるみたいです 私も今日見つけて驚きました

rx-z5815
質問者

お礼

>そう言えばアドインの中にLOOKUPのウイザードがあって こういう時用の式を自動で作ってくれるみたいです 試しに使ってみようかと思ったのですが、操作手順がイマイチわかりませんでした(^_^;) でも、こういう機能もあるということがわかって、大変参考になりました。 アドバイスありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

INDEX関数とMATCH関数を組み合わせましょう D列の会社名でSheet2のD列(会社名)を検索して、合致するSheet2のB列の値を求めたいなら、 =IF(ISNA(MATCH(D1,Sheet2!$D$1:$D$300,0)),"",INDEX(Sheet2!$B$1:$B$300,MATCH(D1,Sheet2!$D$1:$D$300,0))) Sheet2のデータ範囲は300行までにしているので変更してください。 またSheet2!$D$1:$D$300、Sheet2!$B$1:$B$300はかならず1行目からにしてください

rx-z5815
質問者

お礼

補足を投稿しただけで、お礼が遅くなり申し訳ありません。 補足にも書いておりますが、今回はzap35 さんが回答してくださった数式を使わせていただきました。 回答ありがとうございました。

rx-z5815
質問者

補足

合致するSheet2のB列の値がない場合のエラー表示の回避まで考えてあり、大変役に立ちましたので、今回はこの数式を使わせていただくことにしました。 実際に使用する際は、この前の段階で会社名の一覧がでているので、その部分を値だけD列にコピペすると、B列にコードNo.が表示されるようにしているのですが、この後さらに、コピペした範囲の次の行のD列に会社名を入力したら、その会社名と合致するB列の値とは全然違う値が表示されてしまいました。 今回のINDEX関数とMATCH関数を組み合わせにも、VLOOKUP関数のように『検索列は降順で一番左の列』といった何か決まりごとのようなものがあるのでしょうか?

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

表(1)をSheet1、抽出シートのB1セルに次の数式で可能ですが如何でしょうか。 =IF($D1<>"",INDEX(Sheet1!B:B,MATCH(D1,Sheet1!D:D,0)),"")

rx-z5815
質問者

お礼

教えていただいた数式を参考に、実際に試してみたところ、うまくいきました。 アドバイスありがとうございました。

  • nue-nue
  • ベストアンサー率56% (25/44)
回答No.1

VLOOKUP関数は、選択範囲の一番左側の列が検索列として使用され、 別の列を検索することはできないようになっています。 また、検索列は必ず降順に並んでいなければなりません。 したがって、別途表を用意する必要があると思われます。

rx-z5815
質問者

お礼

VLOOKUP関数を使用するならば、表(1)をそのまま利用することはできないということですね。 できれば、表(1)はそのまま使用したいので、今回は他の関数を使うことを考えようと思います。 回答ありがとうございました。

関連するQ&A

専門家に質問してみよう