• ベストアンサー

Vlookup の指定範囲、左端でなきゃだめ?[Excel 2003]

Excel 2003 の Vlookup 関数について質問です。Vlookup の検索範囲の指定についてです。検索値と同じものを検索範囲から表引きするのですが、検索値と同じものを探す範囲が、範囲内の一番左の列、というのは変更不可能なのでしょうか?たとえば、検索値=ドラえもん か ノビタ か 静香ちゃん のとき、年齢を表引きする数式を作りたい時、A列に人物、B列に年齢が表1のように書かれていたら =vlookup(X1,A1:B3,2,false) とできます。しかし問題は表2のように、年齢の列と人物の列が逆になっていた場合です。その場合は vlookup 関数は使えませんか?指定行をマイナスにしてみてもダメなようでした。 [表1] ドラえもん 3歳 ノビタ 15歳 静香ちゃん 14歳 [表2] 3歳 ドラえもん 15歳 ノビタ 14歳 静香ちゃん

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

本件そういう仕様なので、色々悩まないこと・詮索しないこと。無駄です。VLOOKUP関数では出来ません。こんなこと関数の解説書のVLOOKUPの項に書いてあります。 ーー 方法は (1)列を入れ替える (2)INDEX関数とMATCH関数を組み合わせる (3)OFFSET関数とMATCH関数を組み合わせる (4)ユーザー関数を作る。VBAでFindメソッドを使う。 (5)LOOKUP関数を使う (6)INDEX関数と配列数式 など考えられる。 ーーー (5)の説明 例データ A列  B列 店名 コード 東京 2 名古屋 3 大阪 4 広島 6 福岡 7 どこでも良いがB10に =LOOKUP(6,$B$2:$B$6,$A$2:$A$6) 結果 広島 ーー 右列にあるコード6で、左列の広島を導出している。 この方法が一番回答される方法でしょう。 (3)以上の解法は初心者には無理。 (2)の関数の説明は 上記の例では =INDEX($A$2:$B$6,MATCH(6,$B$2:$B$6,0),1) でやはり 広島 となる。 実際は6のところの引数はセル番地で指定する場合がほとんどでしょう。

その他の回答 (3)

noname#62235
noname#62235
回答No.3

match関数とoffset関数を組み合わせて使うと良いかもしれません。 =OFFSET(A1, MATCH("B", $B:$B, FALSE)-1, 0) こんな感じ。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.2

こんな関数もあります。 LOOKUP関数で出来ます。 表2を参照する場合、 年齢がA列、氏名がB列、検査値がセルD1とすると 数式は =LOOKUP(D1,B1:B3,A1:A3)

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

vlookup関数の仕様上無理です。 一例ですが次の方法は如何でしょうか。 =INDEX(A:A,MATCH("ノビタ",B:B,0))

関連するQ&A

専門家に質問してみよう