経理・営業事務の仕事では、店舗別や部門別の実績を月ごとに横並びで集計した表を扱う場面がよくあります。A列に店舗名や勘定科目名、B列以降に「4月」「5月」「6月」……と月見出しが横方向に並ぶ売上表や試算表がその典型です。この表から「渋谷店の7月の売上だけを取り出したい」「現金残高の7月時点の数値だけを確認したい」というとき、縦方向に検索するVLOOKUPでは対応できません。このような横方向の表から値を検索して取り出すのがHLOOKUP関数です。この記事ではHLOOKUPの基本の書き方、VLOOKUPとの使い分け、そして実務でよく出会う#REF!・#N/Aエラーの原因と対処法をまとめます。

HLOOKUPとは何か・VLOOKUPとの違い

HLOOKUP(Horizontal Lookup)は、表の一番上の行(見出し行)を横方向に検索し、そこから指定した行数だけ下にずれたセルの値を返す関数です。実務で使用頻度の高いVLOOKUP(Vertical Lookup)が表の1列目を「縦方向」に検索するのに対し、HLOOKUPは表の1行目を「横方向」に検索する点が最大の違いです。どちらを使うべきかは検索する項目の並び方、つまり表の作りによって決まります。

VLOOKUPが向く表

  • 検索したい項目が1列目に縦に並ぶ
  • 例:社員番号順の名簿、商品コード順の商品マスタ

HLOOKUPが向く表

  • 検索したい項目が1行目に横に並ぶ
  • 例:月別・四半期別の売上表、月が列見出しの試算表

共通点

  • 表の先頭(1列目/1行目)を検索する
  • 検索値と見出しが完全一致している必要がある

基本の書き方

HLOOKUPは「検索値」「範囲」「行番号」「検索方法」の4つの引数を取ります。

=HLOOKUP(検索値, 範囲, 行番号, 検索方法)

例:A1:M4セルに店舗別×月別売上表があり、1行目が月見出し(4月・5月・6月……)、2行目が渋谷店の実績の場合。渋谷店の7月の売上を取り出すには
=HLOOKUP("7月",$A$1:$M$4,2,FALSE)

「行番号」は表のシート上の行番号ではなく、選択した範囲の1行目(見出し行)を1と数えたときの「何行目か」を指します。上の例であれば渋谷店のデータは範囲の2行目にあるため、行番号は2になります。検索方法にFALSE(完全一致)を指定することで、見出しと検索値が完全に一致するセルだけを探しに行きます。

実務でのよくある使用シーン

経理担当者であれば、月次試算表で科目(現金・売掛金・買掛金など)を行に、月を列見出しとして並べた表から、特定の科目の特定月の残高だけをHLOOKUPで横引きし、月次レポートや決算資料に転記する場面が典型的です。営業事務担当者であれば、店舗別×月別の売上実績表から「今月の各店舗の実績」を集計シートに引っ張ってくる際に、月見出しをHLOOKUPで検索して該当店舗の行の数値だけを取り出すという使い方をよくします。どちらのケースも、表そのものは維持したまま「見たい月だけ」を別シートに抽出できるのがHLOOKUPの強みです。

HLOOKUPでよくあるエラー・トラブルと対処法

#REF! エラー

行番号(row_index_num)が、指定した範囲の実際の行数を超えているときに発生します。

例:=HLOOKUP("7月",A1:M4,5,FALSE) だが範囲A1:M4は4行しかないため、行番号5は範囲外

対処法として、範囲の行数と行番号が対応しているか数式バーで確認してください。よくある原因は、後から表の行を削除・並べ替えたにもかかわらず行番号を修正し忘れているケースです。行を追加・削除した後は、関係する数式のrow_index_numも必ず見直しましょう。

検索方法を省略して意図しない値が返る

4番目の引数「検索方法」を省略すると、自動的にTRUE(近似一致)として処理されます。VLOOKUPと同じ感覚で完全一致のつもりで省略すると、見出しの並び順によっては全く違う列の値が返ってきます。

例:=HLOOKUP("7月",A1:M4,2) と検索方法を省略。月見出しが五十音順や登録順でバラバラに並んでいると、"7月"に一致しない列の値が返ることがある

対処法は、実務でHLOOKUPを使う場合は基本的に検索方法にFALSE(完全一致)を明示的に指定することです。近似一致は見出しが昇順に並んだ数値表など限られた場面でのみ使う特殊な機能だと考え、迷ったらFALSEを書く習慣にしましょう。

#N/A エラー

検索値と見出しセルの表記が完全に一致していないときに発生します。見た目は同じ「7月」でも、内部的には別物として扱われていることがあります。

例:検索値は"7月"なのに、見出しセルには"7月 "(末尾に半角スペース)や"07月"、あるいは日付データとして入力された値が入っている

対処法として、見出しセルをクリックして数式バーに表示される実際の内容を確認してください。全角・半角の違い、余分なスペース、他システムからの貼り付けによる表記ゆれが典型的な原因です。見出し行自体を検索範囲に含め忘れているケースもあるため、範囲の1行目がきちんと見出し行になっているかも合わせて確認しましょう。

初心者がつまずきやすいポイントとコツ

まとめ

HLOOKUPは、月や四半期が列見出しとして横に並ぶ表から値を取り出したいときに頼りになる関数です。縦方向の表にはVLOOKUP、横方向の表にはHLOOKUPという使い分けをまず押さえ、検索方法には必ずFALSE(完全一致)を指定すること、行番号は範囲内の相対的な位置であることを意識すれば、#REF!や#N/Aといったエラーの大半は防げます。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。

よくある質問

HLOOKUPとVLOOKUP、どちらを使えばいいですか?
表の作りで判断します。検索したい項目(社員番号や商品コードなど)が表の1列目に縦に並んでいる表はVLOOKUP、月や四半期などの項目が表の1行目に横に並んでいる表はHLOOKUPを使います。店舗別×月別の売上表のように、月が列見出しとして横方向に並んでいる表から特定の月の実績を取り出したい場合はHLOOKUPが適しています。
HLOOKUPで#REF!エラーが出るのはなぜですか?
行番号(row_index_num)に、指定した範囲の行数を超える数値を入力しているのが原因です。HLOOKUPの行番号は「シートの行番号」ではなく「範囲の1行目(見出し行)を1とした場合の何行目か」を表すため、範囲の行数と行番号がずれていないか数式バーで確認してください。
HLOOKUPで見出しが存在するはずなのに#N/Aエラーになります。なぜですか?
検索値と見出しセルの表記が完全に一致していないのが原因です。全角と半角の違い、余分な半角スペース、「7月」と「07月」のような表記ゆれ、見出しが日付データとして入力されている場合の表示形式の違いなどが典型的な原因です。見出しセルをクリックして数式バーに表示される実際の内容を確認しましょう。

関連記事

→ HLOOKUPの数式を作ってみる ← 記事一覧に戻る