概要
「横方向に並んだ表から値を探したい」――そんなときに使うのが HLOOKUP(Horizontal LOOKUP) です。
VLOOKUP が“縦方向”の検索なら、HLOOKUP は“横方向”の検索。
表の 一番上の行で検索し、見つかった列の“下の行”から値を返す のが特徴です。
横に年度が並んでいる売上表、横に科目が並んでいる成績表などで大活躍します。
基本の考え方
HLOOKUP の書式は次のとおりです。
=HLOOKUP(検索値, 範囲, 行番号, 検索の型)
- 検索値:探したい値(例:年度、科目名など)
- 範囲:検索する表全体(検索行を含む)
- 行番号:範囲の上から数えて「何行目を返すか」
- 検索の型:FALSE(完全一致)を使うのが基本
例:
1行目に年度、2行目に売上が並んでいる表から、E2に入力した年度の売上を取りたい場合:
=HLOOKUP(E2, $A$1:$D$2, 2, FALSE)
基本の使い方(年度・科目などの横方向検索)
年度から売上を引く
表の構造が次のような場合:
- A1:D1 → 年度(2022, 2023, 2024, 2025)
- A2:D2 → 売上
E2 に年度を入力し、F2 に売上を表示したいとき:
=HLOOKUP(E2, $A$1:$D$2, 2, FALSE)
意味をかみ砕くと:
- 「E2 の年度を」
- 「A1:D1 の横方向から探して」
- 「見つかった列の 2 行目(売上)を返す」
- 「完全一致で探す」
科目名から点数を引く
1行目に科目(国語・数学・英語)、2行目に点数がある場合:
=HLOOKUP(G2, $A$1:$C$2, 2, FALSE)
応用の使い方(エラー対策・空欄対策)
見つからないときに「科目なし」などのメッセージを出す
=IFERROR(HLOOKUP(G2, $A$1:$C$2, 2, FALSE), "科目なし")
入力が空欄のときは何も表示しない
=IF(G2="","",IFERROR(HLOOKUP(G2,$A$1:$C$2,2,FALSE),"科目なし"))
よくあるつまずきと対策
1. 検索するのは「範囲の一番上の行」
HLOOKUP は 範囲の1行目 で検索します。
検索したい行が2行目以降にある場合は、範囲をずらして「検索行を一番上に」してください。
2. 行番号は「範囲の上から数える」
範囲が A1:D3 の場合:
- A1:D1 → 1行目
- A2:D2 → 2行目
- A3:D3 → 3行目
という数え方です。
3. 完全一致検索は FALSE を使う
省略すると近似値(TRUE)扱いになり、誤った列を返すことがあります。
=HLOOKUP(E2,$A$1:$D$2,2,FALSE)
4. 文字列と数値の違いに注意
見た目が同じでも、
- 「2025」(数値)
- 「2025」(文字列)
は別物です。
必要に応じて TEXT や VALUE で型を揃えましょう。
5. 列の挿入に強くない
VLOOKUP と同じく、列の追加・削除で範囲がズレることがあります。
頻繁に列をいじる表では XLOOKUP の方が安全です。
例題
問題1: A1:D1 に年度、A2:D2 に売上があるとき、E2 の年度に対応する売上を F2 に表示してください。
=HLOOKUP(E2, $A$1:$D$2, 2, FALSE)
問題2: A1:C1 に科目、A2:C2 に点数があるとき、G2 の科目に対応する点数を H2 に表示してください。
=HLOOKUP(G2, $A$1:$C$2, 2, FALSE)
問題3: G2 の科目が見つからない場合は「科目なし」と表示してください。
=IFERROR(HLOOKUP(G2, $A$1:$C$2, 2, FALSE), "科目なし")
問題4: G2 が空欄のときは空表示、それ以外は点数を表示してください。
=IF(G2="","",IFERROR(HLOOKUP(G2,$A$1:$C$2,2,FALSE),"科目なし"))
問題5: A1:F3 の表で、1行目が検索行、3行目の値を返したい場合の式を I2 に書いてください(検索値は H2)。
=HLOOKUP(H2, $A$1:$F$3, 3, FALSE)
まとめ
HLOOKUP は「横方向の検索」の定番関数で、
上の行で探して、下の行から返す というシンプルな動きです。
ポイントは次の4つ。
- 検索行は範囲の一番上に置く
- 行番号は“範囲の上から数える”
- 完全一致(FALSE)を使う
- IFERROR でエラー処理をしておく
この型を押さえれば、年度別売上、科目別点数、横方向のマスタ参照などが一瞬で自動化できます。
