• ベストアンサー

左から2列目を検査値とし1列目の数値を返す方法は

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

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

  • ベストアンサー
  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.1

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

karugamonooyako
質問者

お礼

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

その他の回答 (3)

noname#79209
noname#79209
回答No.4

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

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

(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))

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

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

関連するQ&A

  • VLOOKUPの列番号について

    VLOOKUPを使っていて、疑問に思ったことがありました。 わかる方がいれば、是非教えてください。 なぜ、列番号はセル参照ではいけないのでしょうか? VLOOKUP(検索値, 範囲, 列番号, 検索の型) ヘルプを確認したところ、以下のようなものでした。 【列番号 範囲 内で目的のデータが入力されている列を、左端からの列数で指定します。列番号 に 1 を指定すると、範囲 の左端の列の値が返され、列番号 に 2 を指定すると、範囲 の左から 2 列目の値が返されます 】と、言っていることは理解できるのですが、範囲内といってもセルに番地はあるわけで、それを使っても良いのでは・・・? なぜ、セルの番地ではなく「1列目」なんでしょうか? 説明の足りない文章で大変申し訳ないのですが、何卒よろしくお願いします。

  • vlookup範囲の左側をピックするには

    例えば、vlookup(検索値,範囲,列番号,FALSE)で、検索値と範囲の左端が紐付けられますよね、返したい値が範囲の左端より更に左、つまり列番号がマイナスになってしまうようなことをしたい場合、どのような関数でできるでしょうか?vlookupでは難しいと思うのですが。アドバイス願います。

  • VLOOKUP関数の列番号をフィルに対応させる方法を教えてください(COLUMN関数以外)

    VLOOKUP関数を横のセルにフィルして使いたいのですが、 検索範囲がA列~ではないので、列番号にCOLUMN関数を使えません。 シートのフォーマットを変えず、範囲内における列番号(範囲内で左端から何番目か、など) を返すためにはどうすれば良いか、ご存知の方教えてください。 VLOOKUP関数を横のセルにフィルしていった場合、列番号は変わらないため、 列番号にCOLUMN関数を入れて列番号を返すようにするとうまくいきますよね。 ただ、COLUMN関数は単純に列番号を返すだけなので、この方法は VLOOKUP関数の検索範囲がA列から始まっている場合のみにしか使えません。 シートのフォーマットを変えず、VLOOKUPにおける範囲がB列以降になる場合、 範囲内における列番号(範囲内で左端から何番目か、など)を返すための関数 もしくは他に何か良い方法をご存知でしたら、お教えいただけませんでしょうか。 売上12ヶ月分+利益12ヶ月分が横に広がっている定型フォーマットがあるのですが、 24ヶ所の列番号を手入力で直すのって非効率的なので・・・。 どうぞ宜しくお願い致します。

  • EXCEL2022でVLOOKUP関数の「検索値」に><等の不等式を使って、「近似値」を使いたい!

     EXCEL2022でVLOOKUP関数の「検索値」に、ヘルプでは「近似値」が使えるとあるので、><等の不等式を使って、範囲指定を行い、複数の項目を抽出してきたい!  例として、 (1)2<「検索値」<30、程度で、60項目程を選び出したうえ、 (2)なおかつ、その60項目の中から、オートフィルタ機能を使用し   て、「トップテン」上位の10項目を表示させる方法  を模索中です。  ★実際に、このVLOOKUP関数を使用して、プログラムを作成されている方は、  「検索値」に『範囲指定を行い、複数の項目を抽出できない』ようだと、★たった一つのみの単独の値に対応する単一項目★しか抽出できない為、広範な使用に適さず、従って、たいへん使い勝手が悪い、使用用途の限定される、いわゆる”退屈な機能”とならないでしょうか?  ヘルプより、  VLOOKUP 関連項目 指定された範囲の左端の列で特定の値を検索し、範囲内の対応するセルの値を返します。  書式 VLOOKUP(検索値,範囲,列番号,検索の型) 検索値 範囲の左端の列で検索する値を指定します。検索値には、値、セル参照、または文字列を指定します。  横に”行”を検索して、一致する項目を表示させるものでは、HLOOKUP関数というものも在りますが、私の意図する”使用方法”を満足させる”関数”、343もあれば、一つ位はな~い"かんすぅ~"?(意図した訳ではないのに、やや、字面が、難しい言葉ばかりになってしまったので、"和み系の、普段は言わないジョーク"をネットなので、書き込んでしまいました。やや反省。)(^_^;)

  • エクセル関数の範囲指定を、座標数値で指定したい

    address関数とindirect関数で、行・列を数値で指定して、セルの値が求められますが、同じように行・列の数値を4つ使って範囲の指定をしたいのですが、どのような関数を使えばよいでしょうか? 具体的には、=MATCH(A1,範囲,1)の範囲を、2組の座標の数値で指定したいのです。

  • VLOOKUP関数の列選択

    VLOOKUP関数で次のようなことは出来ますか? VLOOKUP(検索値、検索範囲、列番号、検索型)の、列番号の部分に別の関数を組み込むことは可能でしょうか? 状況に応じて検索列を変化させたいので、出来ればVLOOKUPを組み込みたいのですが・・・ 宜しくお願いします。 また、難しいようならそれに近い方法や、別の関数があればご教授ください。

  • Vlookup関数で検索結果がエラーになってしまう

    お世話になります。 Vlookup関数の質問となります。 =VLOOKUP(C2,Sheet2!$A$2:$E$685,1,FALSE) 検索値  →リストを使用(元データはSheet2の指定したセル範囲の表の2列目のデータ) 範囲 →Sheet2の特定のセル範囲 列番号 →1(ここは100-01、100-02などの番号が入力されています) 検索方法 →false(完全一致) この式で「#N/Aエラー」が発生してしまいます。 単純に「氏名」から「社員番号」を引っ張りたいだけなのですが、 なんでエラーになるのでしょうか? 範囲に指定した表には空白行はありますが、書式設定などは特に問題はないです。 恥ずかしい質問なのは十分に理解していますが、 教えて頂きたく思います。 よろしくお願い致します。

  • エクセルのVLOOKUP関数の応用

    VLOOKUP関数は、 ”AがBXとCYの範囲内でその左端のどれかと一致すればその行のD列目のデータをコピーする”というような文法で使うと思います。 それの発展系として、 "AがBXとCYの範囲内でその3列目のどれかに一致し、かつ、その行の左端が”合計”ならばその行のD列目のデータをコピーする”というようにできないでしょうか。 すなわち検索する列番号を指定することと、それに検索する条件を1つ付加するということです。前者の問題は列を入れ替えれば良いのですが、もしあれば教えて頂きたいです。後者の問題の方が切実なのですが。よろしくお願いします。

  • vlookup関数の使い方

    vlookup関数を使って検索する場合、指定された範囲の1列目に特定の値がないとき、#N/Aが返ってきますが、私は1列目に特定の値がない時には数字の0(ゼロ)が返ってくるように四苦八苦しています。なんとかならないでしょうか。

  • ある数値を始めて越えた時の値が知りたいです。

    A列に以下のような数値があります。B1セルに、初めて2.00を越えた時の値を表示させたいのですが、 どのような方法があるでしょうか?(下では2.10が欲しい数値です) 2を越える一つ前なら以下の関数で出来ました。 =VLOOKUP(2,A:A,1,TRUE) 1.36 1.48 1.61 1.86 1.97 2.10 2.22 2.35 あと、下の数列のように、上の行に2より大きな数字があると、VLOOKUP関数だけだと一つ前すらも求めることが出来ません。 表示させたいのは、『一つ上のセルが2より小さく、初めて2.00を越えた時の値です。』 4.19 3.39 2.68 2.08 1.65 1.36 1.48 1.61 1.86 1.97 2.10 2.22 2.35 関数だけで駄目であればマクロでも構いません。良い方法が無いでしょうか?

専門家に質問してみよう