関数 EXCEL&VBA

HLOOKUP関数とVLOOKUP関数の違いと使い方|EXCEL関数

HLOOKUP関数 をご存知ですか?

Excelで表を検索する関数として VLOOKUP関数 はよくご存知かと思います。
HLOOKUP関数は、VLOOKUP関数と対で覚えておきたい便利な関数です。

両者の「違い」は関数の先頭の一文字だけですが、これが大きな意味を持ちます。

エクセル本でも VLOOKUPばかりが脚光を浴びますが、今回は HLOOKUP関数 をピックアップしたいと思います。


HLOOKUP関数

HLOOKUP関数とは

HLOOKUP関数とは、こちらも文字どおり表の先頭行を横方向(HORIZONTAL)に検索して同じ列にあるデータの値を返す関数で;

=HLOOKUP(検索値, 範囲, 行番号 [,検索の型] 

で表されます。

つまり、VLOOKUP関数の「横バージョン」HLOOKUP関数 というわけです。

HLOOKUPの使い方【基本編】

HLOOKUPの使い方

HLOOKUPの使い方 は非常に簡単です。
日ごろ VLOOKUP関数 を使っている方ならば、縦・横を逆に考えればいいだけです。

ですが、今回はあらためて「HLOOKUPの使い方」について解説します。


上の図は、セルA5からE7までが店舗別売上表、セルA2からB3が店舗の売上げを検索するエリアです。
そして、セルB2に入力された店舗の売上げを下の売上表から検索しセルB3に値を返します。

HLOOKUP関数は、セルB3(赤枠部分)にセットします。
この場合、セルB3にセットされる数式は;

=HLOOKUP(B2, B5:E7, 3, FALSE

となります。

HLOOKUPと「検索の型」

これも VLOOKUP をご存知の方には復習となりますが、HLOOKUP関数の構成要素に「検索の型」があります。
※ご存知の方はこの項目は飛ばしてご覧ください。

上の関数の例で言うと、「=HLOOKUP(B2, B5:E7, 3, FALSE)」の「FALSE」の部分です。
ここには、TRUE もしくは FALSE のいずれかが入りますが省略することも可能です。

TRUE: 近似一致
FALSE: 完全一致

を意味しているのですが、上の例の場合は FALSE なのでセルA2の「大田区」と完全に一致する項目が売上表の中にある場合のみセルB3に値を返します。

TRUE が入る場合の例としては、検索値が今回の「大田区」のように文字列ではなく数値の場合です。
元となる表の検索値の項目が、1.2.3....と数字が並んでいるような場合、検索値として「2.5」という表には存在しない数値が入力された場合にもっとも近い数字「2」で検索した結果を返します。
※範囲の先頭行(検索対象)を昇順で並べておく必要があります。

検索の型が省略された場合は、TRUE(近似一致)として処理されますので注意してください。


HLOOKUPの使い方【応用編】

HLOOKUPで複数条件に合致するデータを検索する

HLOOKUP関数の検索値として指定できるデータは通常は1つだけです。
また、検索場所も通常は表の先頭行に限られます。

しかし、うまく応用すれば複数条件に合致するデータを検索することも可能になります。
ここでは、HLOOKUPを応用した複数条件検索の例を紹介します。


上の表では「分類CD(コード)」と「商品CD」の複数の条件に合致した商品名を正しくセルB4に表示できています。

すでに述べたとおり、HLOOKUP関数で条件として指定できる項目は1つだけでなので、ちょっと工夫をします。
実は上の表には「エクセルの8行目」が隠されています。
8行目を表示させると下の図のようになります。


例として、セルB8には;

=B6 & B7

という数式が入力されていて、分類CDと商品CDを結合しています。この数式をセルF8までコピーしています。

こうすることで「検索項目」を1つにすることが出来ました。

したがって、セルB4に入る数式は;

=HLOOKUP(B2&B3, B8:F9, 2, FALSE

となります。
ポイントは、検索値の部分が「B2&B3」となっていて、2つの検索条件を結合しているところです。
また、検索範囲も「B8:F9」と、8行目と9行目だけを対象にしているところです。

この理屈さえマスターしてしまえば、検索条件がいくつに増えても全く問題ありませんね。


HLOOKUPで [#N/A] エラーを表示させない

最後に、検索条件に該当するデータが見つからなかった場合に表示される [#N/A] エラーを非表示にする方法にについて説明しておきます。

これには、IFERROR関数 を使用することをおすすめします。
上に述べたサンプルの数式を使用して表現すると;

IFERROR( HLOOKUP(B2&B3, B8:F9, 2, FALSE), "" )

のようになります。

「もしエラーならば~~しなさい。」という関数なので、上の例の場合は「エラーの場合は""(ブランク)にしなさい。」と読み取れます。
もしエラーの場合に、[#N/A] ではない表現をしたければ、"" の代わりに "該当ナシ" などの言葉を表示させることも可能です。

VLOOKUP と HLOOKUP の違い

皆さんよくご存知の VLOOKUP関数は、表の左端の列を文字どおり縦(VERTICAL)方向に検索します。

検索する項目が縦に並んでいる表ならば VLOOKUP関数 を使用すればよいのですが、元データ(表)の項目を横方向に検索したい場合はどうすればよいでしょうか?

縦軸・横軸が逆に配列された表を別に用意しますか?
いえいえ、その必要はありません。

そんな時に役に立つのが、HLOOKUP関数 なのです。

HLOOKUP についての説明は以上です。
VLOOKUP以外のバリエーションとしてぜひ使ってみてください。

関連記事・広告



併せて読んでおくとさらに便利

COUNTIF で「を含む」データをカウントする|Excel 関数
COUNTIF関数・ワイルドカード
COUNTIF関数を使い「~を含む」データをカウントする方法を解説。ExcelのCOUNTIF関数で任意の文字列を含むセルをカウントする にはちょっとした工夫が必要なのです。ヒントは「ワイルドカード」。

VBAで最終行を取得する方法と そこからできること|Excel VBA
VBA・最終行
VBAで最終行を取得する方法を解説。最終行の行番号を取得できることにより最終行の削除や、最終行までセルを選択したり繰り返したり色々なことが可能になります。

VLOOKUP の使い方と使えない・エラーでお困りの方へ
VLOOKUP関数
Excelで VLOOKUP の使い方について解説します。VLOOKUPの数式から具体的な使い方まで詳しく説明しています。VLOOKUPが使えない、エラーが出るという方...


※その他関連記事は、このページの下の方にもあります。




-関数, EXCEL&VBA
-,