VLOOKUPの列番号とは?

このQ&Aのポイント
  • VLOOKUP関数を使っていると、列番号について疑問が生じることがあります。列番号は、セル参照ではなく「1列目」「2列目」と指定します。
  • VLOOKUP関数の列番号は、範囲内で目的のデータが入力されている列を、左端からの列数で指定します。1を指定すると範囲の左端の列の値が返され、2を指定すると範囲の左から2列目の値が返されます。
  • なぜセルの番地ではなく列番号を指定するのかと疑問に思うかもしれませんが、VLOOKUP関数は柔軟に使えるようにするための仕組みであり、セル番地を使うと範囲が変わった時や列の位置が変わった時に修正が必要になります。列番号を使うことで、範囲が変わっても列の位置が変わっても正しい結果を返すことができます。
回答を見る
  • ベストアンサー

VLOOKUPの列番号について

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

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

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

(1)VLookup関数は、表のような(V=Verticalであるから、「列」が複数集まった)データを対象に考えます。 そして第1引数であるある値が、探されるのは第2引数で指定した範囲(表)の最左列(=第1列)だけを探します。 (このことを書いている本が少ないように思います。) その最左列で、一致した(今は検索の型がFALSEの時を取り上げる)値があった行について注目して、その行の第何列の値を取るかを、2列以降の列数で指定します。 第3引数で、第1列は指定しても、自分自身の値であり、し方が無いし、かつまた「範囲」の列として、第3引数で指定した列より右の列を含めても意味が無いとも言えます。最左の列は1から始まります。 ある場合は第2列で、ある場合は第3列を採れという使い道もあるかもしれません。 「表」だからこそ、縦の列で指定するわけで、列が違う セルを指定するようには、指定させない仕様です。 セル指定にして、自由度を与えて欲しいというニーズは 想像できません。行と列の交点がセルを表すではないですか。

fukaura
質問者

お礼

お礼が大変遅れて申し訳ありませんでした。 大変参考になりました。ありがとうございました。

関連するQ&A

  • Vlookupの応用?

    通常、VLOOKUPを使い、検索する場合は、 =VLOOKUP(検索値,範囲,列位置,検索の型)となると思います。 このうち、検索値と範囲(の左端)、列位置をどこかのセルから取得するにはどのようにすればよいでしょうか? たとえば、 A1セルには1と入力(A列を参照)、B1セルには2と入力(B列を参照)、C1セルには3と入力すると、 A3セル=VLOOKUP(A3,B:Z,3,false) となるようにしたいのですが、どのようにすればよいでしょうか。 お願いします。

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

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

  • エクセルのVLOOKUPについて

    VLOOKUP関数について VLOOKUP関数の使用方法は  VLOOKUP(検索キー、範囲、列数、検索の型) である  多くのWEBの使用例では検索キーで検索するのは「範囲」の第1列であり、  返す列の値は2列以降という例ばかりである。  このとき、検索キーで「範囲」の第2列を検索して、  「範囲」の第1列の値を返すようにできるか、という質問です。 なおエクセルの版数は2000です。 よろしく、お願いします。 以上

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

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

  • vlookupの結果があるセルの書式を取得したい

    vlookupの結果があるセルの書式を取得したい =VLOOKUP(検索値,範囲,列番号,検索の型)で値を取ってくることは 出来ますが、その値の入っているセルの書式を取得したい。 Sheet1の セルA1に、検索したい値が入っていて、 セルB2にVLOOKUP関数が入り。 範囲はSheet2のA1:D1000となっていて、 列番号に4と入っていて10行目に 検索値と一致する値が入っていた場合に、D10の値は VLOOKUP関数で持ってこれますが、D10のセル書式を セルB2に反映させたいのですが、どのようにすれば良いでしょうか? VBAでプログラムしないとダメでしょうか?

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

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

  • EXCELのVLOOKUPについて

    はじめまして VLOOKUP機能を使っていたら行き詰ってしまったので質問します。 =VLOOKUP(検索値、範囲、列番号、検索の型) と言う形で作っているのですが 列番号のところを行番号で指定したい場合は どのようなコマンドを入れればよろしいのでしょうか? 宜しくお願いします。

  • VLOOKUPで列番号を移動させたい

    すいません。質問なのですが VLOOKUPで=VLOOKUP(検索値,範囲,列番号,FALSE) の式の中で列番号を増やしていくことは可能でしょうか? たとえばA1では=VLOOKUP(検索値,範囲,2,FALSE)であった式がB1では=VLOOKUP(検索値,範囲,3,FALSE)に なるみたいなかんじです。 手動でなくそういう式にできたらと思って ご相談させていただきました。

  • VLOOKUPがうまくいかない

    商品コードを打ち込めば、商品名がでるようにしたくて、VLOOKUPを使ってみましたが、うまくいきません。 最初に商品コード(A23)を打ち込んで、商品名を出したいセル(B23)を検索値に入れます。 範囲は、商品コードと商品名を打ち込んだグラフ(A15:B18)を選択しました。 列番号を2とし、検索の型には何も入れないままOKを押すと、 「数式を計算できません。数式のセル参照は計算結果を参照(循環参照)しています」とでます。 ちなみに、範囲を入力した後F4を押して、OKを押してもだめでした。 どこが違うのでしょうか? また、VLOOKUPでなくても出来るのでしょうか? 教えてください、お願いします。

  • Q:エクセルのVLOOKUPで・・・

    VLOOKUPでご相談させてください。 VLOOKUP(検索値, 範囲, 列番号, 検索の型)で、検索の型の部分を FALSEに指定した場合、検索値 と完全に一致する値だけが検索され、 見つからない場合は エラー値 #N/A が返されますが、見つからない 時にそのエラー値#N/Aを表示させずに空欄にさせたいのですが、そん なときどうしたらいいですか? if(VLOOKUP(検索値, 範囲, 列番号, 検索の型)<>"#N/A","○","") ではダメでした。検査値一致の場合には○を、検査値がなければ空欄 としたい表を作成したいのです。 アドバイスお願いします。

専門家に質問してみよう