HLOOKUP関数の使い方・読み方|横方向の表から値を検索する

執筆者:

カテゴリ:

HLOOKUP関数の使い方・読み方のイメージ

検索・参照

HLOOKUP関数の使い方・読み方

Excel関数辞典

読み方:HLOOKUP は「エイチルックアップ」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)

HLOOKUPは、横方向に並んだ表から値を探す関数です。VLOOKUP の縦横が入れ替わったもの、と考えるのが一番わかりやすいです。

使える環境Excel○Googleスプレッドシート○
このページの中身(21項目)
  1. 書式
  2. 基本の使い方
  3. 実務での使いどころ
  4. 使わないほうがいい場面
  5. そもそも表の形を見直す
  6. エラーの対処
  7. 横方向の表が生まれる理由と、その代償
  8. 縦に持ち替える方法
  9. それでも横方向で扱う場合
  10. 検索できないときの確認
  11. 縦持ちに変えたあとの集計
  12. 受け取る形式を変えられない場合
  13. 横持ちのデータをそのまま扱わない
  14. 「検索・参照」の関数を全体から見る
  15. 数式を書く前の手順
  16. どの関数でも共通する確認
  17. 引き継ぐときに残すこと
  18. このサイトの収録状況
  19. よくある質問
  20. まとめ
  21. 関連する関数

この記事の書式と対応環境の出どころ(2026-08-26 確認)

関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。

H は Horizontal(水平)の頭文字です。

HLOOKUP関数の使い方の記事構成図
HLOOKUP関数の使い方:この記事で扱う内容

書式

=HLOOKUP(検索キー, 範囲, 行番号, [検索の型])
引数内容
検索キー探したい値
範囲探しに行く表。一番上の行が検索対象になる
行番号範囲の上端を1として、取り出したい行が何番目か
検索の型FALSE=完全一致 / TRUE=近似一致

VLOOKUPが「左端の列を検索して、右へ数える」のに対し、HLOOKUPは「上端の行を検索して、下へ数える」動きになります。

基本の使い方

月ごとの数字が横に並んだ、よくある集計表です。

ABCD
1項目4月5月6月
2売上120014501380
3原価700820790
4利益500630590

「5月の利益」を取り出します。

=HLOOKUP("5月", A1:D4, 4, FALSE)

結果:630

1行目から「5月」を探し、見つかった列(C列)の4行目を返しています。

HLOOKUP関数の使い方の要点図
HLOOKUP関数の使い方

実務での使いどころ

月次・年次の推移表は横に伸びる形が多いため、「月を指定して、その月の数字を引く」用途でよく使います。

=HLOOKUP($B$1, $A$1:$M$10, 3, FALSE)

B1セルに月を入れると、その月の数字が出てくるダッシュボードのような作りにできます。範囲は絶対参照にしておいてください。

行番号を MATCH で動的に求めると、項目名も指定できるようになります。

=HLOOKUP($B$1, $A$1:$M$10, MATCH($A$5, $A$1:$A$10, 0), FALSE)

使わないほうがいい場面

HLOOKUPには、VLOOKUPと同じ弱点がそのまま残っています。

  • 行番号が「上から何番目」という位置指定なので、行を挿入すると壊れる
  • 検索できるのは範囲の一番上の行だけ
  • 見つからないときの値を指定できない

これらは XLOOKUP で全部解決します。XLOOKUPは検索範囲を「行」で指定すれば横方向の検索になるため、HLOOKUPの上位互換として使えます。

=XLOOKUP("5月", B1:D1, B4:D4)   → 630

行を挿入しても壊れず、読んでも意味が分かりやすい。新しく作るならこちらを推奨します。

そもそも表の形を見直す

横に長い表は、集計・並べ替え・QUERY による抽出のすべてで扱いにくくなります。データを蓄積する目的なら、縦持ち(1行1レコード)に直すほうが後が楽です。

月項目金額
4月売上1200
4月原価700
5月売上1450

この形にしておけば、SUMIFS や QUERY で自由に切り出せます。HLOOKUPが必要になった時点で、表の設計を疑ってみる価値はあります。

エラーの対処

#N/A が出る

一番上の行に検索キーが存在しません。「5月」と「5月 」(末尾スペース)、「5月」と「05月」のような表記ゆれが原因のことが多いです。

#REF! が出る

行番号が範囲の行数を超えています。範囲が4行なのに行番号5を指定した、というケースです。


横方向の表が生まれる理由と、その代償

HLOOKUPは横並びの表から値を検索する関数です。使い方はVLOOKUPと同じ考え方で、方向が違うだけです。しかし実務で使う機会は多くありません。理由は、横方向の表そのものが扱いにくいためです。

横方向の表が生まれるのは、たいてい印刷や見た目の都合です。月を横に並べた予算表、項目を横に並べた比較表。人が読むには分かりやすい形ですが、データとしては扱いにくい構造をしています。

扱いにくさは具体的に三つあります。第一に、データが増える方向が右になるため、列を追加し続けることになります。列数には上限があり、また横スクロールが必要になって閲覧性が落ちます。第二に、並べ替えや絞り込みといった機能は縦方向のデータを前提としているため、そのままでは使えません。第三に、集計関数の多くも縦方向を想定した書き方が自然で、横方向だと数式が読みにくくなります。

したがって、HLOOKUPを書く前に一度立ち止まる価値があります。その表は本当に横並びである必要があるのか。縦に持ち替えられないか。持ち替えられるなら、以降の作業がすべて楽になります。


縦に持ち替える方法

横方向の表を縦方向に変える方法はいくつかあります。

もっとも手軽なのは、行と列を入れ替える関数を使う方法です。範囲を指定するだけで、縦横が入れ替わった結果が返ります。元データと連動するので、更新も自動です。→ TRANSPOSE関数の使い方

一度きりの変換でよければ、コピーしてから行列を入れ替えて貼り付ける機能があります。数式ではなく値として固定されるので、元データが変わっても追従しません。

構造的に持ち替えたい場合は、データの持ち方そのものを設計し直すことになります。月を横に並べるのではなく、日付の列を一本持たせて縦に積む形です。この形にすると、集計も絞り込みも並べ替えも標準の機能で扱えるようになります。

見た目として横並びが必要なら、縦に持ったデータから集計表を生成すればよいのです。元データは縦、表示は横、という分離ができると、両方の利点が得られます。


それでも横方向で扱う場合

構造を変えられない場面もあります。他部署から受け取る決まった形式、システムから出力される固定のレイアウト。こうした場合はHLOOKUPで対応することになります。

書き方はVLOOKUPと同じ考え方です。検索する行が範囲の最上段にある必要があり、そこから何行目を返すかを数字で指定します。VLOOKUPで列番号を数えていたところが、行番号に変わるだけです。

事故の起き方も同じです。範囲を絶対参照で固定しないと、コピーしたときにずれます。行番号を固定の数字で書いていると、行を挿入したときに参照先が変わります。完全一致の指定を省略すると、近似一致になって意図しない値が返ります。

より堅牢に書くなら、行番号を検索関数で求める方法があります。見出しの名前から位置を求めれば、行を挿入しても壊れません。

新しい検索関数が使える環境なら、そちらのほうが安全です。縦横を問わず同じ書き方で検索でき、範囲の方向さえ揃っていれば動きます。→ XLOOKUP関数の使い方


検索できないときの確認

値が見つからない場合の原因は、縦方向の検索とまったく同じです。順に確かめてください。

型の違いが第一です。見た目が同じでも、片方が文字列で片方が数値なら一致しません。表示の寄せ方が手がかりになります。

前後の空白が第二です。末尾に半角スペースが入っているだけで一致しません。文字数を数えれば分かります。

範囲の指定が第三です。検索する行が範囲の最上段になっているか、範囲が絶対参照で固定されているかを確認してください。

行番号が第四です。範囲の行数を超えていないか、範囲を広げたときに番号を直し忘れていないかを見てください。

完全一致の指定が第五です。省略していると近似一致になります。エラーは出ず、もっともらしい値が返るため、もっとも発見が遅れる原因です。

この五つを順に潰せば、原因は特定できます。


縦持ちに変えたあとの集計

横方向の表を縦に持ち替えると、集計の書き方が一変します。どう変わるかを具体的に見ておくと、持ち替える価値が分かります。

横持ちのままでは、月ごとの合計を出すのに列ごとの合計を並べることになります。月が増えるたびに数式を足す必要があります。特定の月だけを抜き出すには、列の位置を求める処理が要ります。

縦持ちにすると、月は列の値になります。条件付きの集計関数で、月を条件に指定するだけで済みます。月が増えても数式は変わりません。

期間で絞る場合も同様です。横持ちでは複数の列を足し合わせることになりますが、縦持ちなら開始日と終了日の条件を指定するだけです。

商品分類と月のクロス集計を作る場合も、縦持ちのほうが単純になります。行に分類、列に月を並べ、条件付きの集計関数を一つ書いてコピーするだけです。

さらに、並べ替えも絞り込みも標準の機能が使えます。横持ちではこれらが使えません。

持ち替える手間は一度きりですが、以降の作業がすべて楽になります。長く使う表であれば、間違いなく元が取れます。


受け取る形式を変えられない場合

他部署やシステムから横持ちで受け取る場合、形式そのものは変えられないことがあります。この場合の対処を整理しておきます。

もっとも単純なのは、受け取ったシートをそのまま保持し、変換用のシートを別に作る方法です。受け取ったデータは触らず、変換後のデータを集計に使います。受け取り元の形式が変わらない限り、変換の仕組みはそのまま機能します。

変換には、行と列を入れ替える関数や、複数の範囲を一列にまとめる関数を使います。値だけでなく、月や項目の情報も同じ形で並べる必要があるため、手順はいくつかの段階に分かれます。

もうひとつの選択肢は、横持ちのまま集計する方法です。列の位置を求める処理を挟めば、特定の月を抜き出せます。ただし、月が増えるたびに範囲を広げる必要があります。

判断の目安は、その表を何回使うかです。一度きりなら横持ちのまま処理し、継続して使うなら変換の仕組みを作る。この基準で決めてください。

いずれの場合も、受け取ったままのデータは必ず残しておいてください。変換に誤りが見つかったときに、元に戻れます。


横持ちのデータをそのまま扱わない

HLOOKUPが必要になる場面の多くは、データが横方向に並んでいるためです。ただし、横持ちのまま集計を続けると、後で必ず行き詰まります。

列が増え続けます

月ごとに列を足していく形は、数式の範囲を毎回広げる作業が発生します。

条件を足せません

複数条件で絞り込む関数は、縦持ちを前提に作られています。

並べ替えができません。 横方向の並べ替えは、操作が限られます。

したがって、可能であればTRANSPOSEで縦に変換してから扱ってください。 一度縦持ちにすれば、VLOOKUPやXLOOKUP、FILTERといった扱いやすい関数が使えます。

元データを直接変換できない場合は、別シートに縦持ちの作業表を作ってください。 元データはそのまま残し、集計は作業表側で行う形です。

HLOOKUPを使うのは、横持ちの表を変更できない場合に限定してください。 使えないわけではありませんが、選択肢としては最後に来ます。

「検索・参照」の関数を全体から見る

検索・参照は別の表から値を持ってくる関数群です。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに16本あります。

記事
ADDRESS
CHOOSE
COLUMN
COLUMNS
IMPORTDATA
IMPORTHTML
IMPORTRANGE
INDEX
INDIRECT
MATCH
OFFSET
ROW
ROWS
VLOOKUP
XLOOKUP
XMATCH

このカテゴリで共通するつまずき

検索値の型と前後の空白で結果が変わります。掃除を先に済ませてください。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。

どれを使うかの決め方

検索列が左端にあるか、返したい列が複数あるかで使う関数が決まります。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。

迷ったときは

→ 全関数の一覧 に目的別の索引があります。


数式を書く前の手順

書き始める前に決めておくことがあります。ここが曖昧なまま書くと、途中で行き詰まります。

1. 出したい結果を一文で書く

「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。

2. 元データの型を確認する

検索値の型と前後の空白で結果が変わります。掃除を先に済ませてください。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。

3. 空欄と0の扱いを決める

未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。

4. 条件の数を数える

検索列が左端にあるか、返したい列が複数あるかで使う関数が決まります。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。

5. 共有先の環境を確認する

新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。

6. 1行だけ書いて確認する

全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。


どの関数でも共通する確認

関数を問わず、結果がずれる原因は限られています。この5つを確認すれば、大半が解決します。

参照を固定したか

下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。

範囲の行数が揃っているか

複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。

型が揃っているか

=ISNUMBER(A2)

数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。

前後に空白が入っていないか

=LEN(A2)&" / "&LEN(TRIM(A2))

数が違えば、余分な空白が入っています。見た目では判別できません。

別の方法で検算したか

同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。

最終行まで確認したか

一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。


引き継ぐときに残すこと

数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。

何を出している数式か

一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。

どの表を参照しているか

参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。

該当しないときの扱い

空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。

触ってはいけない場所

列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。

使った関数の対応環境

新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。

確定した期間は値にする

締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。

このサイトの収録状況

現在、201本の記事をカテゴリ別に整理しています。関数名が分からない場合は、カテゴリから探してください。

カテゴリ記事数
目的別51本
集計47本
文字列31本
日付19本
検索・参照15本 ←この記事
条件15本
機能12本
配列・抽出10本
関数一覧1本

探し方の順番

関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。

記事の構成

どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。


よくある質問

Q. VLOOKUPとどちらを使うべきですか

データが縦に並んでいるならVLOOKUP、横に並んでいるならHLOOKUPです。ただし、そもそも縦に持ち替えられないかを先に検討してください。

Q. 上方向に検索できますか

できません。検索する行は範囲の最上段である必要があります。上方向に検索したい場合は、INDEXと検索関数の組み合わせを使ってください。

Q. 行を挿入したら結果がずれました

行番号は固定の数値なので追従しません。検索関数で行番号を求める形に書き換えると壊れにくくなります。

Q. 見つからないときに空欄にしたいのですが

エラー回避の関数で包みます。ただし、本来見つかるはずのものまで隠れるので、動作確認が終わってから包んでください。

Q. 横方向のデータを集計したいのですが

集計関数は横方向の範囲も受け付けます。ただし、条件付きの集計になると書き方が煩雑になるため、縦に持ち替えるほうが楽です。

Q. 列数に上限はありますか

あります。横方向にデータを増やし続ける設計は、いずれ上限に達します。この点でも縦持ちが有利です。

Q. 印刷の都合で横並びにしています

元データを縦に持ち、印刷用の表を別に用意する構成にできます。行と列を入れ替える関数を使えば、表示用の表は自動生成できます。

Q. スプレッドシートでも同じですか

同じです。書き方も挙動も変わりません。



まとめ

  • 書式は =HLOOKUP(検索キー, 範囲, 行番号, FALSE)
  • 一番上の行を検索し、下へ数えて返す
  • VLOOKUPの縦横が入れ替わったもの
  • 行の挿入で壊れる弱点があるので、可能なら XLOOKUP を使う

関連する関数