経理・営業事務の仕事では、店舗別や部門別の実績を月ごとに横並びで集計した表を扱う場面がよくあります。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つの引数を取ります。
例: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でよくあるエラー・トラブルと対処法
行番号(row_index_num)が、指定した範囲の実際の行数を超えているときに発生します。
対処法として、範囲の行数と行番号が対応しているか数式バーで確認してください。よくある原因は、後から表の行を削除・並べ替えたにもかかわらず行番号を修正し忘れているケースです。行を追加・削除した後は、関係する数式のrow_index_numも必ず見直しましょう。
4番目の引数「検索方法」を省略すると、自動的にTRUE(近似一致)として処理されます。VLOOKUPと同じ感覚で完全一致のつもりで省略すると、見出しの並び順によっては全く違う列の値が返ってきます。
対処法は、実務でHLOOKUPを使う場合は基本的に検索方法にFALSE(完全一致)を明示的に指定することです。近似一致は見出しが昇順に並んだ数値表など限られた場面でのみ使う特殊な機能だと考え、迷ったらFALSEを書く習慣にしましょう。
検索値と見出しセルの表記が完全に一致していないときに発生します。見た目は同じ「7月」でも、内部的には別物として扱われていることがあります。
対処法として、見出しセルをクリックして数式バーに表示される実際の内容を確認してください。全角・半角の違い、余分なスペース、他システムからの貼り付けによる表記ゆれが典型的な原因です。見出し行自体を検索範囲に含め忘れているケースもあるため、範囲の1行目がきちんと見出し行になっているかも合わせて確認しましょう。
初心者がつまずきやすいポイントとコツ
- 検索方法(range_lookup)を省略しない。省略すると自動的にTRUE(近似一致)になり、見出しの並び順次第で誤った値が返ってきます。迷ったら必ずFALSEを明示しましょう。
- 検索範囲に見出し行自体を含める。範囲指定の1行目が見出し行になっていないと、そもそも検索対象が見つからずエラーになります。見出し行を範囲の先頭に含めてください。
- 行番号は「シートの行番号」ではなく「範囲内の何行目か」。選択した範囲の1行目(見出し行)を1として数えるため、シート上の行番号とずれないよう注意しましょう。
- 表全体を絶対参照($)で固定してからコピーする。複数の店舗や科目に数式をコピーする際、範囲がずれると意図しない行を参照してしまい、エラーや誤った値の原因になります。
まとめ
HLOOKUPは、月や四半期が列見出しとして横に並ぶ表から値を取り出したいときに頼りになる関数です。縦方向の表にはVLOOKUP、横方向の表にはHLOOKUPという使い分けをまず押さえ、検索方法には必ずFALSE(完全一致)を指定すること、行番号は範囲内の相対的な位置であることを意識すれば、#REF!や#N/Aといったエラーの大半は防げます。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。