アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

[表1]
ドラえもん 3歳
ノビタ 15歳
静香ちゃん 14歳

[表2]
3歳 ドラえもん
15歳 ノビタ
14歳 静香ちゃん

A 回答 (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のところの引数はセル番地で指定する場合がほとんどでしょう。
    • good
    • 0

match関数とoffset関数を組み合わせて使うと良いかもしれません。



=OFFSET(A1, MATCH("B", $B:$B, FALSE)-1, 0)

こんな感じ。
    • good
    • 0

こんな関数もあります。


LOOKUP関数で出来ます。

表2を参照する場合、
年齢がA列、氏名がB列、検査値がセルD1とすると
数式は
=LOOKUP(D1,B1:B3,A1:A3)
    • good
    • 0

vlookup関数の仕様上無理です。


一例ですが次の方法は如何でしょうか。
=INDEX(A:A,MATCH("ノビタ",B:B,0))
    • good
    • 0

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