【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

VLOOKUP関数では範囲の1列目で特定の値を検索し、指定した列と同じ行にある数値を返しますが、これを2列目で特定の値を検索し、左端の1列目の値を返す方法を探しています。可能でしょうか?
1列目にNo.、2列目に氏名があります。これを名前を検索して、1列目の番号を返したいわけです。列を入れ替えれば可能ですが、入れ替えずにやる方法あれば教えてください。よろしくお願いします。

A 回答 (4件)

作業セルを一番左に持ってくるしかないと思います。


検索値に等しいならば1となるようにしておいて、作業セルも含めて、VLOOKUP関数の検索域としてやるわけです。
すでにデータが入っていて一番左に作業セルがとれない場合でも、列を挿入してやれば、個々の関数とか入っていても自動的にずれに対応してくれます。
    • good
    • 0
この回答へのお礼

返事が遅くなってすみません。やっぱりこの方法が簡単でした。お騒がせしました。みなさんありがとうございます。

お礼日時:2008/04/13 22:19

検査範囲がA1:B5だったとすれば


C1に
=A1
として5行目までコピー。
A列で検索して。B列の値が欲しいなら
VLOOKUP(検査値,A1:B5,2)
B列で検索して。実際はA列の値が欲しいなら
VLOOKUP(検査値,B1:C5,2)
表面的にはC列の値が得られますが、
C列の値は
=A1
なので実質的にはA列の値が得られることになります。
    • good
    • 1

(1)VLOOUPに拘って


VLOOKUP関数の仕様です。質問のようなことはそのままでは出来ません。B列に列挿入しA列を挿入列にコピーし(または=A1)
非表示にするなどは論外として
(2)その他の関数利用
VLOOKUP関数はMATCH関数と機能で親類関係にある。
MATCH関数で該当行を見つけ、INDEX関数で範囲の中の
その行のデータを採ればよい。列を指定できるから。
(3)VBA利用 
Findメソッドなど利用
例データ
F1:G6
1山田
2大木
4越野
6上村
7近藤
8鈴木
ーー
ユーザー関数
標準モジュールに
Function vlk(a)
Application.Volatile (True)
Dim x As Range
Set x = Range("G1:G10").Find(what:=a.Value)
vlk = x.Offset(0, -1)
End Function
ーー
シートで
A列  B列
大木2
近藤7
鈴木8
越野4

B1の関数は
=vlk(A1)
下方向に式を複写する。
空白行の手当てで
=IF(A1="","",vlk(A1))
    • good
    • 0

INDEX関数とMATCH関数の組み合わせで可能です



例えばC1セルに検索したい「氏名」を入力して
 =IF(ISNA(MATCH(C1,B:B,0)),"該当なし",INDEX(A:A,MATCH(C1,B:B,0)))
でヒットした最初の行のA列の値を取得できます。(ヒットしない場合は「該当なし」と表示)
    • good
    • 0

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