• ベストアンサー

EXCELのVLOOKUPとHLOOKUPについて

どうしてもわからないので、よろしくお願いします。 (1)VLOOKUPやHLOOKUPで、例えば =IF($B18="","",VLOOKUP($B18,$H$18:$J$29,2,FALSE)) という数式があるとします。 範囲のところ($H$18:$J$29)を絶対参照にするのは分かるのですが、検索値のところ($B18)がどうして列固定になるのかがわかりません。どういったときに、検索値が列固定になるのでしょうか? (2)あと、FALSEとTRUEの違いがどうテキストを読んでもいまいちわかりません。 試験前なので、焦っております。。 よろしくお願いします!

  • yuarn
  • お礼率56% (26/46)

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

  • ベストアンサー
  • etosetora
  • ベストアンサー率22% (39/175)
回答No.3

$B18の$はそのときの状況によって付けたり、付けなかったりします 表計算ソフトでは、その関数を複写して使います 「=IF($B18="","",VLOOKUP($B18,$H$18:$J$29,2,FALSE))」 今関数が入っているセルの右となりに式を複写して列番号を3にすると考えたとき$が付いていないとC18になってしまい、検索値がおかしくなってしまいます 自分で表を作ったとして、どのセルに式を入れ、どうやって複写していくかを考えれば理解できると思います FALSEとは「完全一致」の数値だけを取り出すとき TRUE とすると「一致するデータが見つからない場合に、検索値未満の最大値を選ぶ」という意味になるのだそうです

yuarn
質問者

お礼

教科書よりわかりやすかったです。 ありがとうございました!

その他の回答 (2)

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.2

(1)試験の問題が「右方向へコピーしろ」と続いているはずです。 (2)検索の型に TRUE を指定した場合と検索の型を省略した場合は、検索値未満で最も大きい値が使用されます。 検索の型に FALSE を指定した場合は、検索値と完全に一致する値だけが検索され、みつからない場合はエラー値 #N/A が返されます。

yuarn
質問者

お礼

大変参考になりました。 どうもありがとうございました!

  • rapi7
  • ベストアンサー率26% (9/34)
回答No.1

こんばんは、 (1) 列固定をするメリットは表引き(VLOOKUP関数)を したいとき、基準となるセルに関数式を設定後 コピーアンドペーストで再利用できることです。 絶対参照($H$18:$J$29)では、縦方向横方向に コピーしても参照範囲は変わりませんよね。 それと同様で($B18)は、列情報(B列)を不変 にしたまま、行方向の相対指定を保持する意味が あります。 どのような場面で使われているのかわかりませんが =IF($B18="","",・・・ではじまるセルの内容を、 再利用するねらいがあると思われます。 (2) FALSE指定の場合は、$B18にある検査値と $H$18にある参照値が完全に一致しないとエラー になります。 TRUE指定の場合は、検査値または検査値に 最も近い値が参照されます。 たとえば、$H$18:$H$29に、2468・・・と偶数値が 設定されてあり、$B$18に、5があった場合、 FALSE指定時は、エラー TRUE指定時は、4の行にある($H$19の行)2列目 つまり、$I$19の値が参照されます。

yuarn
質問者

お礼

おかげさまで理解できました。 教科書よりわかりやすかったです。 ありがとうございました!

関連するQ&A

  • エクセルの関数VLOOKUPについて教えて下さい。

    エクセルの関数VLOOKUPについて教えて下さい。 範囲にあたるデーター部分が3つのかたまりに分かれている時どのような数式で表すことができますか? 具体的には、HIJ KLM OPQの列位置にある3つの表の中から検索したいのです。 作った数式は1つの表から検索するもので =IF(C9="","",IF(ISNA(VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE)),"未登録",VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE))) です。(C9,材料一覧!$H$5:$J$54,2,FALSE)の後に&(同じ数式で列文字を入れ替えて)で繋げてみました。列範囲KLMの表は上手くいったのですが、3つ目のOPQの表は上手くいきませんでした。 原因と正しい数式を教えて下さい。 よろしくお願いいたします。

  • VLOOKUP関数、HLOOKUP関数(確認)

    私は、マイクロソフトオフィスエキスパートエクセルの試験に向けて勉強中です。 ひとつ確認です。 VLOOKUP関数、HLOOKUP関数の「関数の引数」→「範囲」とでますよね。 ここで、「範囲」は絶対参照にしないといけないですよね?絶対参照ということがあいまいになっているのですが「固定する」ということですよね。そうしないと、「範囲」がずれていくわけですよね?

  • エクセルのVLOOKUPの複数参照について

    エクセルのVLOOKUPの複数参照について シート2(kokunai)に A列 B列 1000 シャープ 1010 ソニー 3050 パナソニック とあります。 シート3(yunyuu)に A列 B列 2000 IBM 2001 HP とあります。 シート1のC列に打ち込んだ数字を元にD列にメーカー名を表示したいのです。 D列に IF(C1="","",IF(ISERROR(VLOOKUP(C1,kokunai,1,0))="FALSE",VLOOKUP(C1,kokunai,2,0),VLOOKUP(C1,yunyuu,2,0))) と数式を打ちましたが、エラーが帰って来ます。 どうすれば良いでしょうか?

  • VLOOKUPのエラーについて

    教えて下さい。 =IF(ISERROR(VLOOKUP($B3,Sheet2!$A$2:$D$35,4,FALSE)),"",VLOOKUP($B3,Sheet2!$A$2:$D$35,4,FALSE))+IF(ISERROR(VLOOKUP($B3,Sheet3!$A$2:$C$50,3,FALSE)),"",VLOOKUP($B3,Sheet3!$A$2:$C$50,3,FALSE)) という数式を使っています。 最初のIF文(Shee2)については有効なのですが、それならと、欲張って他のシートも参照できるように、+の後にIF文(Sheet3)を追加したら#VALUE!が表示されます。 何がいけないのでしょうか?

  • HLOOKUPでもVLOOKUPでもなくて、それに似た関数はありますか

    HLOOKUPでもVLOOKUPでもなくて、それに似た関数はありますか? やりたいことは、 同じファイルにシート1とシート2があり、 シート1には a列 b列 c列 d列 1 ミッキー サッカー チョコレート 2 ミニー  野球   クッキー 3 ドナルド テニス  ビスケット 4 デイジー 水泳   ポテトチップス ・ ・ ・ という、10,000行ほどのエクセル表があり、 シート2には、 野球 水泳 ・ ・ などという風に、シート1のc列の文字列が全部ではなく、複数ある1列のみのエクセル表があります。 そして、このシート2のセルをそれぞれシート1で検索して、それを含む一行全部を表示した エクセル表を新たにシート3に作成したいのですが、関数かVBAかで可能でしょうか? 例えば、この場合、シート3には a列 b列 c列 d列 2 ミニー  野球   クッキー 4 デイジー 水泳   ポテトチップス ・ ・ ・ というように表示したいのです。 HLOOKUPやVLOOKUPは検索される文字列は端っこしかダメなんですよね? 教えて下さい!!

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

  • エクセルの「IF+VLOOKUP」に関してのよくある問題で、意味のわからない相対参照があります

    「1.セル【C18】にセル【B18】の「商品コード」に対応する「商品名」を返す数式を入力して下さい。「商品一覧」の表を参照すること。 次に、「商品コード」が入力されていない場合は、「商品名」にエラーが表示されないように数式を修正して下さい。(シートに表があり、IF+VLOOKUPを使う問題です) 2.セル【C18】の数式をもとに請求書の表を完成させて下さい」(←「【C18】の下の行も同じように、商品コードから商品名を表示させれるように完成させなさい」っていう問題です) 上記のような問題があったのですが、 数式を入力して下にオートフィルして 完成させたのですが、【問題の解答】を見た限りでは 「セル【C18】を「=IF($B18="","",VLOOKUP($B18,$H$18:$J$29,2,FALSE))」と修正する」 と書いてありました。 ですが、数式の「$B18」の部分で「列を固定にする」 意味はあるのでしょうか? 「$」はなくてもちゃんと機能してますし、 表も完成してるように思うのですが・・・ あと、これは商品コードが空白の場合にはエラーが 出ないのでいいのですが、商品コードとは関係ない 文字列も入れた場合(間違った文字列を入れた場合)に エラーがでないようにする事もできますでしょうか?

  • IFとVlookUPの合わせ技

    VlookUpを使い検索して一致するものがあった場合は、真を、一致しなければ偽の数式による結果をセルに反映させたいと考え、以下のような式を作ったのですが、エラーをはきます。 この式は IF A列の指定範囲内に今日と同じ日がある TRUE B列の指定範囲の合計を、その週の始まりからその日までの日数で割る。 False B列の指定範囲の平均値を出す というものです。 結局、今日以降の数字を0ではなくnullにすることで解決したのですが、エラーをはいた原因を後学のために教えて下さい。 IF(VLOOKUP((Today()),A2:A10,1,False)), (B2:B8)*5/(MOD(DAY(TODAY()),7)), ROUND((AVERAGE(B2:B8)*5),2)

  • エクセルのVLOOKUP関数の検索値が数式の場合について

    エクセルのVLOOKUP関数に悩んでいます。 どなたかご指導お願いいたします。 *--------------------------* A~F列 すべて書式が時刻です。 A、B列には数式で計算された時刻が入力されており、 C列はA列+B列という計算式がはいっています。 F列に=VLOOKUP(C列、D:E列、2、FALSE)というように C列を検索値とし、D列を参照し、E列にある時刻をF列に 設定したいのですが、結果が#N/Aになります。 例えばA,B列が数式ではなく入力した値であれば 検索値であるC列がA列+B列 でも結果はOKでした。 検索値は数式セル同士を足し算した数式は設定不可能なのでしょうか?

  • VLOOKUP式の範囲の部分に他のセルから入れ込みたい

    B列に=VLOOKUP($A1,'18-1'!$B$5:$N$80,4,FALSE)) という数式があってA列の値で18-1シートを検索してVLOOKUPすることになっています。 そして18-1の部分は18-2、18-3、18-4…と変わっていくんですがC列に範囲の'18-1'!$B$5:$N$80の部分を入力してB列の数式に入れ込むことは出来るでしょうか? =VLOOKUP($A1,?????????,4,FALSE)) このような感じで…

専門家に質問してみよう