「横方向に並んだデータから値を取り出したいのに、VLOOKUPだとうまくいかない…」そんな経験はありませんか? VLOOKUPは縦方向の検索には強いですが、横方向のデータには対応していません。
そこで活躍するのがHLOOKUP関数です。この記事では、HLOOKUP関数の基本的な使い方から実践的な活用例、よくあるエラーの対処法まで、わかりやすく解説していきます。
この記事は次のような人におすすめ
– 横方向に並んだ表からデータを検索・取得したい人
– HLOOKUP関数の引数や使い方を基礎から理解したい人
– VLOOKUPやXLOOKUPとの違いを知りたい人
HLOOKUP関数とは?
読み方と語源
読み方は「エイチ ルックアップ」関数です。
HLOOKUPの「H」は「Horizontal(ホリゾンタル)」の頭文字で、「水平・横方向」という意味があります。つまり、横方向にデータを検索する関数ということですね。
ちなみに、よく比較されるVLOOKUP関数の「V」は「Vertical(バーティカル)=垂直・縦方向」を意味しています。名前を覚えるだけで、どちらが縦でどちらが横かがわかるようになりますよ。
HLOOKUP関数でできること
HLOOKUP関数は、指定した範囲の上端行(1行目)で検索値を横方向に探し、見つかった列の指定した行数分だけ下のセルの値を取得する関数です。
たとえば、月別の売上表で「4月」を検索して、その列の3行目にある売上金額を取り出す、といった使い方ができます。
データが横方向(行方向)に並んでいるときに使うのがHLOOKUP、縦方向(列方向)に並んでいるときに使うのがVLOOKUPと覚えておきましょう。
HLOOKUP関数の書き方(構文と引数)
基本構文
まずはHLOOKUP関数の構文を確認しましょう。
構文
=HLOOKUP( 検索値, 範囲, 行番号, [検索の型] )
引数は全部で4つあり、最初の3つは必須、4つ目の「検索の型」は省略できます。
引数の説明
各引数の役割を表で整理しました。
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 検索値 | 必須 | 範囲の上端行から探したい値。文字列・数値・セル参照が使えます |
| 範囲 | 必須 | 検索対象と取得したい値を含むセル範囲。上端行が検索対象になります |
| 行番号 | 必須 | 取得したいデータがある行の番号。上端行を「1」として数えます |
| 検索の型 | 省略可 | FALSEまたは0で完全一致、TRUEまたは1で近似一致。省略するとTRUEになります |
「検索の型」はFALSE(完全一致)を指定するのがおすすめです。 省略するとTRUE(近似一致)になりますが、意図しない結果が返ることがあるため、基本的にはFALSEを明示的に指定しておきましょう。
なお、TRUEを指定する場合は、上端行のデータが昇順に並んでいる必要があります。昇順になっていないと正しい結果が得られないので注意してください。
HLOOKUP関数の基本的な使い方
ここでは、支店別の売上データから特定の支店の値を取り出す例で解説します。
次のような横方向の表があるとします。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 東京支店 | 大阪支店 | 名古屋支店 | 福岡支店 | |
| 2 | 売上 | 500 | 350 | 280 | 200 |
| 3 | 経費 | 120 | 80 | 65 | 50 |
| 4 | 利益 | 380 | 270 | 215 | 150 |
東京支店の利益(380)を取得するには、次のように入力します。
=HLOOKUP("東京支店", B1:E4, 4, FALSE)
この数式の意味を分解してみましょう。
- 検索値: “東京支店” — 上端行から「東京支店」を探します
- 範囲: B1:E4 — B1からE4の範囲を指定しています
- 行番号: 4 — 上端行から数えて4行目(利益の行)の値を取得します
- 検索の型: FALSE — 完全一致で検索します
結果として「380」が返ります。行番号を「2」に変えれば売上(500)、「3」に変えれば経費(120)を取得できますよ。
セル参照を使うこともできます。たとえばG1セルに支店名が入力されている場合は、次のように書けます。
=HLOOKUP(G1, B1:E4, 4, FALSE)
こうすると、G1セルの値を変更するだけで、取得する支店のデータを切り替えられます。
HLOOKUP関数の実践的な使い方・応用例
月別データから特定月の値を取得する
実務では、月別に横方向に並んだ集計表をよく見かけますよね。こういったデータからHLOOKUP関数で特定の月の値を取り出せます。
たとえば、以下のような月別売上表があるとします。
| A | B | C | D | … | M | |
|---|---|---|---|---|---|---|
| 1 | 1月 | 2月 | 3月 | … | 12月 | |
| 2 | 売上 | 100 | 120 | 150 | … | 200 |
| 3 | 目標 | 110 | 110 | 140 | … | 190 |
3月の売上を取得するには、次のように入力します。
=HLOOKUP("3月", B1:M3, 2, FALSE)
結果は「150」が返ります。行番号を3にすれば、目標値(140)を取得できます。
IFNA関数と組み合わせてエラーを回避する
HLOOKUP関数で検索値が見つからないと、#N/Aエラーが表示されてしまいます。これを避けるには、IFNA関数と組み合わせるのが便利です。
=IFNA(HLOOKUP("札幌支店", B1:E4, 4, FALSE), "該当なし")
検索値が見つからなかった場合に「該当なし」と表示されるので、見た目もスッキリしますし、後続の計算でエラーが連鎖するのを防げます。
よくあるエラーと対処法
HLOOKUP関数を使っていると、思わぬエラーに遭遇することがあります。ここではエラーの種類別に原因と対処法を整理しました。
#N/A エラー
#N/Aエラーは「検索値が見つからない」ときに発生します。
| 原因 | 対処法 |
|---|---|
| 検索値が範囲の上端行に存在しない | 検索値のスペルや値を確認する |
| 検索値や範囲に余分なスペースがある | TRIM関数でスペースを除去する |
| 文字列と数値の型が一致していない | VALUE関数で数値に変換、またはTEXT関数で文字列に変換する |
エラーを非表示にしたい場合は、IFNA関数やISNA関数と組み合わせて対処しましょう。
#REF! エラー
#REF!エラーは「行番号が範囲の行数を超えている」ときに発生します。
たとえば、範囲がB1:E3(3行)なのに行番号を「4」と指定するとこのエラーが出ます。指定した範囲の行数を確認して、行番号が範囲内に収まるように修正してください。
#VALUE! エラー
#VALUE!エラーは「行番号に1未満の数値や文字列を指定した」ときに発生します。行番号には必ず1以上の整数を指定しましょう。
VLOOKUP・XLOOKUPとの違いと使い分け
Excelには検索系の関数がいくつかあります。HLOOKUP関数とよく比較される関数との違いを表にまとめました。
| 比較項目 | HLOOKUP | VLOOKUP | XLOOKUP |
|---|---|---|---|
| 検索方向 | 横方向(行) | 縦方向(列) | 縦横両方向 |
| 検索位置 | 上端行のみ | 左端列のみ | 任意の範囲 |
| デフォルトの検索型 | 近似一致(TRUE) | 近似一致(TRUE) | 完全一致 |
| 対応バージョン | Excel 2003以降 | Excel 2003以降 | Microsoft 365 / Excel 2021以降 |
| 見つからない場合の指定 | 不可 | 不可 | 第4引数で指定可 |
使い分けのポイントは以下のとおりです。
XLOOKUP関数は縦方向・横方向の両方に対応しており、HLOOKUPとVLOOKUPの機能を1つの関数でカバーできます。お使いのExcelのバージョンがMicrosoft 365やExcel 2021以降であれば、XLOOKUPの利用を検討してみてください。
ただし、Excel 2019以前のバージョンではXLOOKUPは使えません。職場のパソコンがまだ古いバージョンという方は、HLOOKUP関数をしっかり押さえておくのがおすすめです。
まとめ
HLOOKUP関数は、横方向に並んだデータから値を検索・取得するための関数です。この記事のポイントをおさらいしましょう。
- HLOOKUPの「H」はHorizontal(水平)の略で、横方向に検索する関数
- 引数は「検索値・範囲・行番号・検索の型」の4つ。検索の型はFALSEを指定するのが基本
- 検索値が見つからないときの
#N/Aエラーは、IFNA関数と組み合わせて回避できる - Microsoft 365やExcel 2021以降であれば、XLOOKUP関数への置き換えも検討してみてください
横方向のデータ検索はHLOOKUP関数にお任せです。ぜひ実務で活用してみてくださいね。
関数一覧
biz-tacticsではExcel関数の一覧を3パターンご用意しています。用途に合わせてお使いください。
エラー値についてのまとめ記事
関数でエラーが発生した際に表示される、エラーの種類を以下の記事でまとめています。
