Excel(エクセル)のLOOKUP関数とVLOOKUP関数とHLOOKUP関数の違い

Introduction

Excel(エクセル)のLOOKUP関数とVLOOKUP関数とHLOOKUP関数の違いについて簡単に説明します。

同じように検索して一致したものを取り出してくる関数ですが、何が違うのでしょうか。それぞれの関数を並べて考えてみましょう。

すべて「LOOKUP」という単語が付いていますね。それぞれの単語の意味を考えると分かり易くなります。

  • 「LOOKUP」・・・調べる、探索するという意味
  • 「VLOOKUP」の「V」は「Vertical」・・・垂直、縦方向の意味
  • 「HLOOKUP」の「H」は「Horizontal」・・・水平、横方向の意味

これだけでも分かることがありますね。「VLOOKUPは縦方向(列)を調べて、HLOOKUPは横方向(行)を調べるんだな」と想像ができます。

※LOOKUP関数は、関数の挿入時に2つの形から選べますが、通常使用する[検査値、検査範囲、対応範囲]の方で説明を進めます。

 英語を直訳すると理解しやすいにゃ

書式から見る違い

まず、関数の書式を比べてみましょう。


LOOKUP関数・・・検査範囲から対応データを探し出し、一致したデータを求める関数

LOOKUP(検査値,検査範囲,対応範囲)

  • 検査値・・・検索する値(一致させたい場所のセル参照や値、文字列)を指定
  • 検査範囲・・・上の[検査値]で検索する1行または1列を指定
  • 対応範囲・・・検索結果に表示する1行または1列を指定


VLOOKUP関数・・・他の表から対応データを探し出し、一致した行中のデータを求める関数

VLOOKUP(検索値,範囲,列番号,検索の型[省略可])

  • 検索値・・・検索する値(一致させたい場所のセル参照や値、文字列)を指定
  • 範囲・・・検索する(一致させる)相手のデータ全体を指定
  • 列番号・・・「範囲」で指定したデータの、左から何列目と「検索値」を一致させるかを指定
  • 検索の型・・・完全一致させたい場合は「FALSE」、近似値で一致させたい場合は「TRUE」を入力。省略した場合は「TRUE」になる。(FALSEは「0」、TRUEは「1」でも可)


HLOOKUP関数・・・他の表から対応データを探し出し、一致した列中のデータを求める関数

HLOOKUP(検索値,範囲,行番号,検索の型[省略可])

  • 検索値・・・検索する値(一致させたい場所のセル参照や値、文字列)を指定
  • 範囲・・・検索する(一致させる)相手のデータ全体を指定
  • 行番号・・・「範囲」で指定したデータの、上から何行目と「検索値」を一致させるかを指定
  • 検索の型・・・完全一致させたい場合は「FALSE」、近似値で一致させたい場合は「TRUE」を入力。省略した場合は「TRUE」になる。(FALSEは「0」、TRUEは「1」でも可)

うーーーん。分かり難い。無理やりまとめると

  • LOOKUPは引数が3つだが、VLOOKUPとHLOOKUPは4つ
  • VLOOKUPとHLOOKUPは、[列番号][行番号]以外の引数は共通

この2点の違いが目立ちます。

使用例で比べてみる

では、実際に使用している画面で比べてみましょう。

下の表を見てください。左側が関数を入力する表で、右側が参照する表です。

左側の表の「提出物」の「A~D」に応じて、右側の表から「提出物」のコメントが表示されます。

※右側に表が2つありますが、VLOOKUPとHLOOKUPのために、行と列を入れ替えただけの同じ表を用意しています。

では、3つの関数を比較してみます。

  • 最初の[検査値][検索値]・・・赤
  • 2番目の[検査範囲][範囲]・・・水色
  • 3番目の[対応範囲][列番号][行番号]・・・紫

に色分けしています。

【LOOKUP関数】

=LOOKUP(D3,$G$3:$G$6,$I$3:$I$6)

もしくは、

=LOOKUP(D3,$H$8:$K$8,$H$10:$K$10)

右の表どちらも使えるのがポイントですね。しかも、引数(関数の中身)が他より1つ少ないです。

【VLOOKUP関数】

=VLOOKUP(D3,$G$3:$I$6,3,FALSE)

参照する表は、上の表しか使えません。なぜなら、VLOOKUP関数は参照する表の左端列を検索することに決まっているから。

3番目の引数には、左から数えた3列目の「3」を入力。最後の「FALSE」は完全一致させるためのものです。

【HLOOKUP関数】

=HLOOKUP(D3,$H$8:$K$10,3,FALSE)

参照する表は、下の表しか使えません。なぜなら、HLOOKUP関数は参照する表の上端行を検索することに決まっているから。

3番目の引数には、上から数えた3行目の「3」を入力。最後の「FALSE」は完全一致させるためのものです。

最初の引数の赤くした場所は、どれも同じ場所を指定していますね。それぞれ特徴が見えてきました。

結局どれを使えばいいの?

3つの関数を並べてみると、LOOKUP関数が引数も3つと少ないですし、表の形に左右されないので便利に見えます。

しかしLOOKUP関数には欠点が・・・

  • データの完全一致ができない
  • [検査範囲]のデータは昇順(小さい順)に並んでいる必要がある

それぞれを簡単に説明します。

  • データの完全一致ができない

VLOOKUP関数とHLOOKUP関数の4番目の引数は「TRUE」か「FALSE」を指定するのですが、そこで「FALSE」を指定すると、データが完全に一致したものだけを取り出すことができます。

しかしLOOKUP関数はその選択が無く、完全一致しない場合はエラーを表示するのではなく、近似値で一致したデータを取り出してしまいます。

  • [検査範囲]のデータは昇順(小さい順)に並んでいる必要がある

先ほどの表でいうと[検査範囲]の「提出物」の項目は、「0、1、2・・・」や「A、B、C・・・」、「あ、い、う・・・」のように昇順に並んでいる必要があります。

LOOKUP関数を使用できるかは、表の作りに左右されてしまうのですね。つまりVLOOKUP関数とHLOOKUP関数の方が様々な場合に対応できるということがいえます。

参照表の検索値が左端列や上端行に無い場合はVLOOKUP関数とHLOOKUP関数が使用できないので、そのような時はLOOKUP関数が良いかもしれません。

まとめ

LOOKUP関数よりも、VLOOKUP関数とHLOOKUP関数で対応した方が困ることが少ないですね。

どの関数もうまく表示されないトラブルが多い関数なので、関数入力後にエラーが表示されていなくても、検索の結果がうまく表示されているか目視で確認するのをお勧めします。

 LOOKUPはあまり使わないにゃ
スポンサーリンク
関連コンテンツ