VLOOKUP関数の使い方と第三引数の修正について

このQ&Aのポイント
  • VLOOKUP関数の使い方と第三引数の修正について説明します。セル参照を使用することで、特定の列を参照できます。
  • VLOOKUP関数を使用する際、第一引数、第二引数、および第三引数を正しく設定することが重要です。
  • VLOOKUP関数では、指定された値に対応する値を別の範囲から検索します。第三引数には検索する範囲の列番号を指定します。
回答を見る
  • ベストアンサー

VLOOKUP

こんばんは、お世話になります。 早速ですが、 本来VLOOKUP関数を使う場合(第一引数、第二引数、第三引数)となっています、そこで何ですが A B C D E F G    1 ■入力表    2 商品No 商品名  単価  生産者 最低発注単位 納品予定 3 1 以下自粛その先にある物。 4 4 5 5 6 2 I J K L M N 1 ■マスタ 2商品No   商品名                  単価 3 1  以下自粛のそのさきにあるもの。       12000 4 2  1分で話せ。全裸で。 9800 5 3  いつか成功するから会費を払え。 淫らな心で。 15000 6 4  前向きな怠惰と前向きな惰性 18000 7 まぁこんな感じで表があるのですが。 そこで質問なんですが、この後 =VLOOKUP($B3, $I:$N, 2,0) これだと同じ値が入ってしまいますが(2列目までしか見てないから) =VLOOKUP($B3, $I:$N,6,0) こうすれば6列まで見ることが可能だけど、余談なんですが ビジネスの現場では、このようなVLOOKUP関数の入力と第三引数の修正が50列にわたるケースもあるそうです。 そこで第三引数にも参照を使うのですが長くなりましたがここで質問ですが、 A B C D E F G    1 ■入力表  2 3 4 5 6  2 商品No 商品名  単価  生産者 最低発注単位 納品予定 3 1 以下自粛その先にある物。 4 4 5 5 6 2 Cの1列目に数字を入れるのですが、 =VLOOKUP($B3,$I:$N,C$1.0)と関数を入力することによって Cの一列目を参照するとあるのですが、 Cの一列目には先ほど入れた数字しかないのにそこを参照して なぜ元々も情報を参照することができるのでしょうか? ご教示お願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.5

おまけ C1など1列目に数値を入れなくても =VLOOKUP($B3,$I:$N,COLUMN(B3),0) とすれば同じ結果が得られます。 COLUMN(B3)は「2」(B列は元の表の2列目なので)を返します。

voltage999
質問者

お礼

回答ありがとうございます。 その様なやり方もあったんですね、解りやすいです。

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.4

回答No.3で最初に引用する一行が抜けてたので、冒頭は > =VLOOKUP($B3, $I:$N, 2,0) > これだと同じ値が入ってしまいますが(2列目までしか見てないから) B3の値をI列から探して一致した行のI列からN列までの2列目(J列の値)を表示する となります。 > C1の値が2だとしたらC$1のところが2になるので の続きですが =VLOOKUP($B3,$I:$N,C$1.0) 右にコピーするときの話だと思いますから C$1がD$1、E$1、F$1・・・ となり2列目3列目4列目のように変化していきます。

voltage999
質問者

お礼

回答ありがとうございます。 何か勘違いをしていました。 この本を見た時その一部の数字(値)だけを参照していると思っていましたが、その参照元の所を参照してそう相対参照? みたいに参照しているのですよね。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.3

> これだと同じ値が入ってしまいますが(2列目までしか見てないから) B3の値をI列から探して一致した行のI列からN列までの2列目(J列の値)を表示する 式を下にコピーしたら B3がB4になるので B4の値をI列から探して一致した行のI列からN列までの2列目(J列の値)を表示する B3とB4の値が違えば結果は変わりますから同じ値にはなりません。 > =VLOOKUP($B3, $I:$N,6,0) > こうすれば6列まで見ることが可能だけど 6列までではなくI列からN列までの6列目(N列)です。 > =VLOOKUP($B3,$I:$N,C$1.0)と関数を入力することによって > Cの一列目を参照するとあるのですが C1の値が2だとしたらC$1のところが2になるので =VLOOKUP($B3, $I:$N, 2,0) と同じ式になり一番最初の説明のようになります。

voltage999
質問者

お礼

回答ありがとうございます。

回答No.2

基本をきちんと学んでから、そういう本を見たほうが良いですよ。 ちょっと見ただけで一日で即戦力に・・・、なれるほど世の中は甘くありません。どれが一番よくつかわれる武器になるものかわかって使えるようにならないと、即戦力にはならないと思います。少なくとも、本に書いてある例がそっくりそのまま使える、なんていう場合も簡単なものならあるかもしれませんが、多くは自分でアレンジしながら使うものです。頑張ってください。

voltage999
質問者

お礼

回答ありがとうございます。 まぁまだこの本は読み始めたばかりなので良くは解っていませんが。

回答No.1

ご質問の文章からは、何をお尋ねになっているのかがわかりかねます。 最後の部分「=VLOOKUP($B3,$I:$N,C$1.0)と関数を入力することによってCの一列目を参照するとあるのですが、Cの一列目には先ほど入れた数字しかないのにそこを参照してなぜ元々も情報を参照することができるのでしょうか?」元々とは何を指しているのでしょう? VLOOKUPの構文は、VLOOKUP(検索値、参照値を含む範囲、戻り値を含む範囲内の列番号、近似一致 (TRUE) または完全一致 (FALSE))が基本です。文中の式には、検索値の指定がない、参照値の範囲指定が変、一致条件の指定もない、ので、提示されている式では、検索結果が表示されないと思いますが、いかがでしょうか。

voltage999
質問者

お礼

回答ありがとうございます。 ちょっと説明しなおすのも面倒なので 詳しくは たった一日で即戦力になるExcelの教科書のサイトでも見て下さい。 もしくはその本のサポートページにexcelの表がダウンロードできるはずです(その中にあるはず)

関連するQ&A

  • VLOOKUPとMATCH関数

    こんにちは、お世話になります。 =VLOOKUP($B3,$I:$N,MATCH(C$2,$I$2:$N$2)2,0),0) この数式に関して何ですが、 第一引数第二引数第三引数と続くわけですが、 VLOOKUPの中にMATCH関数が入ったりとだんだん細かくなってきてしまって、難しいのですが この関数の数式の処理を詳しく解りやすく教えて頂けないでしょうか? ご教示お願いします。

  • VLOOKUPの循環参照について

    B3=VLOOKUP(B3,A9:C16,2,0)の数式を入れています。エクセル2007使用 エクセルで問題です。 図1の商品名の下はセルのB3の位置なんですが、VLOOKUPの関数を使用しても、循環参照のため0という表記にされてしまうのです。本来ならば、「美容液」と表記されるはずなんですが、一体なにがいけなかったんでしょうか?わかるかたがおられましたらできるだけわかりやすくよろしくお願いいたします。 図1 商品No 商品名 単価 数量 金額 BK003 0になる SP001 FS001 下の図2は商品Noの位置がセルのA9になりA列、商品名がB列、単価がC列、¥6800の位置がC16になります。かなり列がずれて表示されていますので注意してご確認お願いします。 図2 商品マスタ 商品No 商品名      単価 SP001 シートパック10枚入 \1,200 FS001 洗顔石鹸Mサイズ \1,500 SP002 シートパック20枚入 \2,000 BK001 化粧水 \2,650 FS002 洗顔石鹸Lサイズ \2,800 BK002 乳液 \3,100 BK003 美容液      \6,800

  • VLOOKUP関数の使い方について

    以前コード番号を入力すると自動的に商品番号が出るようにしたいと質問させていただきました。 教えていただいた方法を使い おかげさまでコード番号を入力すると隣のセルに商品番号が出るようになりました。 ただ一緒に単価も入力させたいのですがそれができません。 入力本体は(シート名 「仕入れ表」) E列 コード番号 F列 商品名 G列 数量 H列 単価 I列 小計(G*H) という構成になっています。 (A~C列は他の項目が入っています) 参照するシート名「cade」 同じブック内にあります。 A列コード番号 B列商品名 C列単価 が入っておりA~C列までを名前の定義で 「cade表」としてあります。 「仕入れ表」のI列(小計) の二行目より =IF(E2<>"",G2*H2,"") の数式がコピーしてあります。 同じく 「仕入れ表」のF列には =IF(E2<>"",VLOOKUP(E2,cade表,2,FALSE),"") と数式を入れました。 結果コード番号を入力すると商品名は出ますが 単価は入力されません。 単価も同時に入力する為にはどのようにしたらよろしいでしょうか? どなかた教えていただけると助かります。 宜しくお願い致します。

  • ExcelでのVLOOKUP関数について

    キー1を1000倍したうえで完全一致のVLOOKUP関数を使うと#N/Aエラーが発生します。 表示上は同じように見えますが内部的に異なる値となっているのでしょうか? 試しにエラー行に対して、キーとターゲットとなる当該セルを「=」でつないで確認しても「TRUE」となります。 添付画像は、 検索先としてA列に基準キーを130.168~130.192(step 0.001)で各行へ入力し、B列はA列を1000倍、C列はB列をROUND関数で整数値に丸めたものをキーとしました。 D列にVLOOKUPで参照する値を入力し、E列以降で以下の異なるパターンで値を参照しています。 (1)【E・F列】 ・E列に整数値をキーとして130168~130192(step 1)で入力。 ・E列をキーとしてB~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,B:D,3,FALSE)』 (2)【G・H列】 ・G列にE列/100をキーとして計算。 ・G列をキーとしてA~D列のVLOOKUP関数としています。   『=VLOOKUP(G3,A:D,4,FALSE)』 (3)【I列】 ・E列をキーとしてC~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,C:D,2,FALSE)』 シートを複製し、キーの入力範囲を0.001~0.025(E列は1~25)にした場合はエラーがでませんでした。 その他の確認としてはTEXT、JIS、ASCなどを組み合わせて文字列としたキー同士のVLOOKUPではエラーにならず値を参照できています。

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • vlookupにつきまして

    こんにちは、教えてください。 以下のような表をつくっています。     A     B      C      D       E 1 商品コード 商品名  100枚   1000枚 10000枚 2  1      赤      10       9       8 3  2      青      11       10        7 4  3      黄       12       11        6 赤という商品を100枚発注すると単価は10円ですが、1000枚発注すると9円になるという表です。 現状はvlookup関数を使用して「1」という商品コードを入力すると「赤」と表示 させ、その後に「1」と「1000枚」という情報を入力 すると 「9円」という単価まで自動表示させてしまう表を作成 したいと思っています。 もし縦横読む関数がありましたら教えてください。 =IF(A29="","",VLOOKUP(A29,sheet1!$D$5:$E$154,2,FALSE)) 現状はこの関数を使用しています。この関数だと単価は手入力と なってしまい作業効率が悪く、金額齟齬のおそれがありますので是非 宜しくお願いします。

  • スプレッドシートでVLOOKUPのスクリプト文

    スプレッドシートで1つ教えて下さい。 A列のプルダウンで選択すると別シートの単価表を参照し B列からD列に単価が表示されるようにしました。 =VLOOKUP($A2,'単価シート'!$A$2:$D$10,2,False)という式になります。 しかし表示された単価を変更したい時に変更すると式までが消えてしまいます。 プルダウンから変更し直そうとすると式が消えてしまい参照されません。 例えば 単価シート 品番  単価1 単価2 単価3 あ    50 60 70 い    80 90 100  入力シート A    B C D あ  50 60 70 ここで単価を修正入力 A    B C D あ  55 60 70 式を入力しないで、スクリプト文でできないでしょうか。 どのようなコードになるか分かる方おられましたら よろしくお願いします。

  • こんにちは。VLOOKUP関数の引数で「範囲」を選択するとき、他のパス

    こんにちは。VLOOKUP関数の引数で「範囲」を選択するとき、他のパスにあるファイルの参照の仕方についてお尋ねします。 例えば、VLOOKUP関数を使って以下のパスにあるファイルを参照するとします。 ▼パス        :C:\作業 ▼フォルダ名     :作業 ▼ファイル名     :参照先.xls ▼参照するシート名:シート1 関数を入力して保存して再び開くと、このようになります。 =VLOOKUP(A1,'C:\作業\ [参照先.xls]シート1'!$A$2:$F$10,3,FALSE) このパス・ファイル名・シート名をどこかのセルに入力しておき、参照先のフォルダが変わったとしても「パス」を入力するセルの値を変えることで、可変的に参照できるようにしたいと思っています。 例えばA10のセルで、範囲の引数である文字列を <A10のセルの値>'C:\作業\ [参照先.xls]シート1'!$A$2:$F$10 というようにつなげて作成し、 =VLOOKUP(A1,A10,3,FALSE) とやってみましたが参照できるわけもなく、うまい方法はないかなと悩み中です。 わかる方からの回答をお待ちしています。

  • VLOOKUP関数で

    エクセル2000で、派遣社員の人件費を管理する表を作っています。 VLOOKUP関数を使い、E列に氏名を入れると、F列に単価(時給)が出るようにしてあるのですが(別ブックの単価表を参照しています)、なぜか特定の氏名を入力した場合のみ#N/Aのエラーが返ってきます。 (たとえば、「山田」だと正しい単価が表示されるのに、「田中」だとエラーになる、といった具合です) 参照先のデータは30ほどありますが、このうち2つでエラーが返ります。書式設定は全て同じです。 これはなぜでしょうか??よろしくお願いします。。。

  • Vlookupの応用?

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

専門家に質問してみよう