• ベストアンサー

VLOOKUPを教えてください

画像のようなVLOOKUP関数を使用しました。 D8には以下の関数を入力しています。 =VLOOKUP(C8,H2:J5,2) C8に500と入力してあるので、D8には「A」と表示してほしいのですが、なぜか「D」と表示されてしまいます。 ちなみに、H2にも500と入力しています。 (小数点等の切り上げではなく、きちんと整数の値として500を入力しています) どなたか原因をお教えください!!

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

  • ベストアンサー
  • kama-milk
  • ベストアンサー率42% (11/26)
回答No.4

「引数」が足りないんだと思います。 この場合、D8には「=VLOOKUP(C8,$H$2:J5,2,FALSE)」と入力します。 カッコの終わり前に「,False」を入力するんですね。 あと、今8行目しかありませんが、おそらくB列に他の人の名前も入れて表にしていくんですよね? でしたら、この数式をコピーしたときに、参照先(Iの2~5)が固定になるように"絶対参照"をした方がいいと思います。 絶対参照といわれてもぴんと来ないかもしれないですが、 範囲を選んだときにキーボードのF4を押すのです。するとドルマークがつくので、それでコピーをしても、範囲がずれなくなります。 Vlookupのときはこの癖をつけることをオススメします。 画像もおいておきますが、入れてある数式は D8:「=VLOOKUP(C8,$H$2:$J$5,2,FALSE)」 E8:「=VLOOKUP(C8,$H$2:$J$5,3,FALSE)」 です

hirapiro
質問者

お礼

画像までご用意いただき、親切に解説していただいてありがとうございました。 コピーするときに、こんな技があるんですね。 実際、それを知らずにコピーしてメチャメチャになってしまいました。 ありがとうございました!

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

>どなたか原因をお教えください!! 取得点の列が降順になってるためですね。昇順に並べ替えてご確認ください。 VLOOKUP関数の最後の引数ですが TRUE 昇順検索(範囲の最左列の値が昇順であることが必要) FALSE 完全一致(範囲の最左列の値の並びは順不同、一致する値がない場合は#N/A!エラーが表示) 省略時 TRUEとみなされます。

hirapiro
質問者

お礼

昇順でないといけないことを初めて知りました! ありがとうございました。

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.2

これは、段階的に評価していくのですか? 第4引数をFALSEにすると確かに提示のケースでは正しい値が出ますが、参照リストそのものの値を入れないとエラーになります。(500でないとAにはならない) 433~499などの数値を入れてBを導き出すこともあるのでしょうか? もしそうなら、第4引数は今のように省略するかもしくはTRUEと入れる必要があります。 そのような使い方をする場合は、参照リストの検索値は昇順で並ぶ必要がありますので提示データで言うとH列をキーにして昇順で並べ替えます。

hirapiro
質問者

お礼

なるほど、昇順でないといけないのですね。 >433~499などの数値を入れてBを導き出すこともあるのでしょうか? はい、他の数値も使用します。 しかし、降順であっても範囲内に「500」の値があるのに表示されないのが納得いかないところではありますが・・・ 仕様と言われれば仕方ないですけど。 ありがとうございました。

回答No.1

=VLOOKUP(C8,H2:J5,2,FALSE) と入れないと適当に似た値を反映させてしまいます。

hirapiro
質問者

お礼

他の数値を入力する場合もありますので、FALSEが使用できないです。 ありがとうございました。

関連するQ&A

  • 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ではエラーにならず値を参照できています。

  • エクセルで小数点以下を切りすてる場合

    お世話になります、エクセルで以下の入力後、小数点以下を切り捨てて整数だけを表示する場合の関数(?)を教えて下さい。 =((B1*108000+D1*1800+F1*30+H1)-119095)/108000

  • エクセルの関数

    セルAとセルBに小数点の値があります。 セルAとセルBどちらか、 (1)0.2以下の値がある場合には、セルAかセルBの値の大きい方を別の列のセルCに入力。 (2)両方とも0.2以上の時には、上記とはまた別の列のセルDに【セルA×セルB】の値を入力。(小数点2桁まで表示、以下四捨五入) (1)と(2)で表示されたものを、またまた別の列のセルEにまとめて、 (1)は 値×5(小数点切り上げ) (2)は 値×25(小数点切り上げ) というものを作りたいのです。 IFとANDとROUNDUPなど使ってやってみましたが、わけがわからなくなってしまったので、 どなたか教えていただけたらありがたいです。

  • VLOOKUP関数の使い方50以下、51以上

    Excel2003です VLOOKUP関数の使い方を教えてください。 例えば50枚以下を30円、51枚以上を25円として印刷枚数により印刷単価をVLOOKUP関数を使って表示させるときに 範囲の表を     A     B   印刷枚数   単価 1 50枚以下   30円 2 51枚以上   25円 とつくり 「D1」に印刷枚数例えば「49」枚を入力し、「E1」にそのときの単価「30」円を表示させたいのですが「EI」に「=VLOOKUP(D1,A1:B2,2,TRUE)と入力すると「D1」に「50」枚以上のときは「50」枚「30」円、「51」枚以上は「25」円と正確に表示されますが「D1」に「49」以下の枚数を入力すると「E1」に「#N/A」とエラー表示されます。「49」枚以下を整数で入力したとき単価「30」円と表示させる表の作り方又は数式の作り方を教えてください。

  • excel関数教えてください。

    表にしてあって、A列には任意の数字がはいるようなってます。関数はB、C、D列に使いたいのですが B列:Aを3で割り小数点以下に.666が出たときには整数に2を足して、.333の場合は整数に1を足して表示したい。 C列:Aを3で割り小数点以下に.666か.333の場合小数点以下を切り捨てたい D列:Aを3で割り小数点以下に.666か.333の場合小数点以下を切り上げたい 例としては   A   B   C   D 1 10,000 33,334 33,333  33,333 2 20,000 66,668 66,666  66,666 上のような表です。Aに入る数値はいろんな 数値があります。関数に該当しないものは 3で割った数字をそのまま表示したいです。 宜しくお願いします。

  • 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の一列目には先ほど入れた数字しかないのにそこを参照して なぜ元々も情報を参照することができるのでしょうか? ご教示お願いします。

  • EXCEL2000 VLOOKUP関数について

    たとえばテストの点数なんかを30点未満はD、60点未満はCなどのように 評価を自動的に表示させる関数はVLOOKUPでいいと思うのですが、 ダイアログに具体的にどんな風に範囲入力すればいいのでしょうか?教えてください。お願いします.

  • エクセル関数

    エクセル関数を教えて下さい。 A×B=Cの計算でCが小数点以下の端数が出る場合、 答えのCを小数点以下を四捨五入して整数にする関数を教えて下さい。 CをROUND関数でDという整数に置き換えるのは分かりますが、乗算の答えCを同じセルで整数にしたいです。よろしくお願いします。

  • EXCELLでセル内の数値の丸める

    現在EXCELでセル内の数値を丸めたいと思っています。 関数の“ROUND”を使用すると四捨五入になり例えば“12.49”と入力すると整数に丸める場合に“12”、また“12.50”と入力すると“13”、すなわち“12.50”以上の数値は切り上げられます。 よって“12.51”も“13”になります。 私はセルに入力した数値の小数点以下の数字が“##.50”は切捨て、“##.51”は切り上げとしたいのですが... つまり“12.50”と入力すると“12”と表示され、“12.51”と入力すると“13”と表示するように設定したい。 これが可能かどうか御存じ無いでしょうか? もし、可能であればそのやり方をお教え願いたいです。 よろしくお願いいたします。

  • 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)) 現状はこの関数を使用しています。この関数だと単価は手入力と なってしまい作業効率が悪く、金額齟齬のおそれがありますので是非 宜しくお願いします。

専門家に質問してみよう