• 公開日:
  • 更新日:

ExcelのHLOOKUP関数の使い方|指定の行と同じ列にある値を返す

Excelの関数でよく知られているVLOOKUP関数は縦方向に検索します。横方向に検索したいときはHLOOKUP関数を使用します。

VLOOKUP関数とHLOOKUP関数の違いを理解して使い分けできるようにしましょう。この記事では初めてHLOOKUP関数を触る人に向けて引数を1つずつ分解して解説しています。

HLOOKUP関数とは?

HLOOKUP関数のHは「Horizon(水平、横)」、LOOKUPは「探す」という意味です。

HLOOKUP(エイチ・ルックアップ)関数は、指定されたテーブルまたは、配列の先頭行で特定の値を検索し、指定した行と同じ列にある値を返します。検索/行列関数の1つです。

HLOOKUP関数の書式

まずは、HLOOKUP関数の書式を確認していきましょう。

HLOOKUP関数の書式

HLOOKUP関数は、指定された範囲の1行目で特定の値を検索し、指定した行と同じ列にある値を返します。

数式としては、何のキーワードで(検索値)、どこを(範囲)、どの行か(行番号)を引数として指定していきます。

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

HLOOKUP関数では引数を最大4つ使用します。4つもあると多いと感じるかもしれませんが、下記で1つずつ説明していきます。

※引数(ひきすう)とは、Excelの関数を使用する際に必要な情報です。関数が結果を返すための判断材料とイメージしましょう。関数名の後の括弧「()」内に入力します。

第1引数(検索値)

検索値

1番目の引数は「検索値」です。この引数は必須です。検索したい値またはセル参照を指定します。文字列などの値を指定するときは「"文字列"」のようにダブルクォーテーションで囲います。

検索値は第2引数である「範囲」の上端の行(上から1行目)からのみ検索します。2行目以降や範囲の上は検索対象としません。

検索値は全角文字と半角文字は区別して検索しますが、英字の大文字と小文字は区別しないので注意しましょう。

検索値の説明

例えば「C5:E7」のセル範囲から検索する場合、検索値は5行目に存在する必要があります。

第2引数(範囲)

範囲

2番目の引数は「範囲」です。この引数は必須です。参照する表のセル範囲を指定します。

指定したセル範囲の上端の行(上から1行目)には、検索値が含まれている必要があります。またセル範囲内に検索する結果の値も含める必要があります。

範囲の説明

例えば検索値が5行目にあった場合、「C5:E7」のように範囲の最初の行である5行目を含める必要があります。

第3引数(行番号)

行番号

3番目の引数は「行番号」です。この引数は必須です。第2引数の「範囲」の上から数えた行の番号を指定します。

行番号の説明

行を数字で指定します。「範囲」の上端の行が1になり、次の行以降2、3・・・となります。

第4引数(検索の型)

検索の型

4番目の引数は「検索の型」です。この引数は任意です。検索値に一致したデータが見つからなかったとき、どのように対応するかを決める引数です。

完全一致のデータのみ検索する方法と、一番近いデータを検索する方法の2種類があります。

検索の型 検索対象 並び替え
「FALSE」または「0」 検索値と完全一致するデータのみ。一致するデータがない場合は「#N/A」が返ります データの並び替えは必要ありません
「TRUE」または「1」 近似値(検索値未満の最大値) データを昇順で並び替えておく必要があります

「検索の型」を省略した場合、「TRUE」として扱われます。

VLOOKUP関数の検索方法

例えば検索値が「50」の場合、検索の型にFALSEを指定すると一致する50を探し、見つかれば「50」を結果として返します。

一方、TRUEを指定した場合、一致するものがないときは検索値より小さい値の中から最大値である「47」を結果として返します。

手順で使用するフォーマットのダウンロードはこちら

HLOOKUP関数の使い方(実践)

実際にHLOOKUP関数を使用する例をご紹介します。引数をどのように使用するか見てみましょう。

まずは上記の表を準備しましょう。今回の目的としては商品コード(B3セル)を入力するとその商品コードに紐づいた単価(C3セル)を表示させるようにしていきます。

HLOOKUP関数を入力する

まずC3セルを選択し、セルに直接『=HLOOKUP(』と入力します。

検索値を指定する

検索値としてB3セルを選択します。C3セルに『=HLOOKUP(B3,』と入力されました。

範囲を指定する

C5からE7までのセルをまとめて範囲選択します。選択されている状態で【F4】キーを押します。そうすると「$C$5:$E$7」のように指定されます。「$」は絶対参照と呼ばれます。数式をコピーしてもズレないようにセルを固定することができます。

行番号のを指定する

行番号として『3』を入力します。行番号には指定した範囲のうち、取り出したい値がある行の番号を指定します。単価を取り出したいので3行目を指定しています。

検索の型を指定する

検索方法として、ここでは完全一致の「FALSE」を指定します。C3セルに『=HLOOKUP(B3,$C$5:$E$7,3,FALSE)』と入力されたので【Enter】キーを押します。

HLOOKUP関数の結果

C3セルに商品コード「1001」に紐づいた単価が表示されました。

HLOOKUP関数とVLOOKUP関数の違い

HLOOKUP関数とVLOOKUP関数の違いについて説明します。

関数の意味と引数の違い

HLOOKUP関数は「横方向」に検索し、VLOOKUP関数は「縦方向」に検索するという違いがあります。

引数の数は最大4つで同じですが、第3引数が行番号か列番号かという違いもあります。

関数 意味 引数
HLOOKUP関数 指定されたテーブルまたは、配列の先頭行で特定の値を検索し、指定した列と同じ行にある値を返します =HLOOKUP(検索値, 範囲, 行番号, [検索の型])
VLOOKUP関数 指定された範囲の1列目で特定の値を検索し、指定した列と同じ行にある値を返します =VLOOKUP(検索値, 範囲, 列番号, [検索の型])

検索値を検索する範囲の違い

HLOOKUP関数は範囲の最初の行(上端の行)、VLOOKUP関数は範囲の最初の列(左端の列)から検索するという違いがあります。

関数 検索値を検索する範囲
HLOOKUP関数 最初の行(上端の行)
VLOOKUP関数 最初の列(左端の列)

VLOOKUP関数の詳しい使い方をチェック!

Excelの関数の中でもよく使用されるVLOOKUP関数の引数を1つずつ分解して解説しています。

ExcelのVLOOKUP関数の使い方|指定の列と同じ行にある値を返す

その他、様々なHLOOKUP関数の使い方

複数条件で検索する

HLOOKUP関数は条件を1つしか指定できませんが、元の表データを加工することで複数条件で検索することが可能です。

表の準備

例えば上記の表で、商品コードの「1002」と商品の「バナナ」を2つの条件として単価を取り出してみましょう。

文字列結合

まず5行目に項目を追加します。「商品コード&商品」としました。C5セルを選択し、『=C6&C7』と入力します。「商品コード」と「商品」を「&」(アンパサンド)で文字列結合します。

オートフィル

C5セルの右下をE5セルまでドラッグしてオートフィルで数式をコピーします。

文字列結合

B列に項目を追加します。「商品コード&商品」としました。B3セルを選択し、『=C3&D3』と入力します。「商品コード」と「商品」を「&」(アンパサンド)で文字列結合します。

HLOOKUP関数の入力

E3セルを選択し、『=HLOOKUP(B3,$C$5:$E$8,4,FALSE)』と入力します。検索値には「B3」(1002バナナ)、範囲には「C5:E8」、列番号には「4」、検索の型には「FALSE」を指定しています。

複数条件で検索する

商品コードの「1002」と商品の「バナナ」を2つの条件とした単価がE3セルにHLOOKUP関数で求めることができました。

別シートを検索する

HLOOKUP関数で別シートのテーブルから検索する方法を紹介します。Sheet1で指定した検索値をSheet2の範囲から検索する例です。

Sheet2のテーブル

Sheet2は「商品コード」「商品」「単価」が入力されているテーブルです。

Sheet1のテーブル

Sheet1に入力した商品コード(B3セル)に紐づいた単価をSheet2から自動的に表示させます。

HLOOKUP関数の入力

Sheet1のC3セルを選択し、『=HLOOKUP(B3,Sheet2!$C$2:$E$4,3,FALSE)』と入力します。

検索値にSheet1のB3セル(1001)、範囲にSheet2の「C2:E4」、行番号に「3」、検索の型に「FALSE」を指定しています。

関数の結果

Sheet1のC3セルに商品コードに紐づいた単価を表示させることができました。検索値を変更して自動的に切り替わるか確認してみましょう。

検索値の変更

Sheet1のB2セルに『1002』と入力するとC3セルが「198」と自動的に切り替わりました。

合計する

HLOOKUP関数で取得した数値を合計することはできません。SUMIF関数を使用することで条件を指定して合計することができます。

以下の記事でSUMIF関数を使用して合計する方法を紹介しています。

ExcelのVLOOKUP関数とSUMIF関数を組み合わせる方法

行番号を自動で指定する(MATCH関数との組み合わせ)

HLOOKUP関数で行番号が固定であればいいですが、抽出したいデータが動的に変わる場合、行番号を手動で修正する必要がでてきます。

MATCH関数と組み合わせることで自動で行番号を切り替えることができます。

プルダウンの設定

上図は商品コード(B3セル)に紐づいた単価、もしくは商品を検索して表示したいとします。C2セルはプルダウンメニューで「単価」「商品」を選択できるようにしています。

行番号が固定だとどちらか1つの結果しかでませんので行番号を動的に変更する必要があります。

数式の入力

C3セルを選択し、『=HLOOKUP(B3,$C$5:$E$7,MATCH(C2,B5:B7,0),FALSE)』と入力します。HLOOKUP関数の第3引数「行番号」にMATCH関数を入れ子(ネスト)しています。

MATCH(マッチ)関数は、指定された照合の種類に従って検査範囲内を検索し、検索値と一致する要素の、配列内での相対的な位置を表す数値を返します。書式は「=MATCH(検索値, 検索範囲, [照合の種類])」のように記述します。

C2セルをMATCH関数の検索値とし、B5~B7セルの中から位置を求めています。例では単価は「3」番目にあるので「3」がMATCH関数の結果として返ります。

MATCH関数との組み合わせ

商品コード(B3セル)を検索値とし、MATCH関数でC2セルの位置を取得して動的に行番号を指定することができました。C3セルに商品コード「1001」の単価「98」が表示されました。

プルダウンで切り替えた結果

それではC2セルのプルダウンメニューから【商品】を選択します。そうするとC3セルが自動的に「りんご」に切り替わりました。

MATCH関数で「商品」の位置を取得してHLOOKUP関数の行番号が「2」になったためです。

以下の記事ではMATCH関数の使い方を網羅していますのでご参考ください。

ExcelのMATCH関数の使い方|検索値の範囲内での相対的な位置を返す

行番号を範囲と連動させる(ROW関数との組み合わせ)

HLOOKUP関数の第3引数「行番号」にROW関数を指定することで範囲の順番と連動させることができます。

ROW関数との組み合わせ

上図でC3セルを選択し、『=HLOOKUP(B3,$C$5:$E$7,ROW(),FALSE)』と入力します。行番号にROW関数を入れ子(ネスト)しています。

ROW(ロー)関数は、参照の行番号を返します。書式は「=ROW([参照])」のように記述します。

ROW関数を入力したC3セルは3行目にあるので「3」がROW関数から返ってきます。

行数を一緒にする

ROW関数で求めた「3」は、HLOOKUP関数で範囲から抽出したい単価(3行目)の位置と同じになります。HLOOKUP関数の数式を入力したセルの行数から行番号をROW関数で求めることができます。

範囲から「商品」を抽出したい場合、「ROW()-1」と行番号に指定することで「3-1」で「2」が行番号として指定されます。