スプレッドシートのHLOOKUP関数の使い方|横方向検索の基本と応用

スポンサーリンク

「月ごとに横に並んだ表から、特定の月の値を取り出したい」。スプレッドシートを使っていると、こんな場面に出会いますよね。

VLOOKUP関数は縦方向の検索には強いですが、横方向のデータには対応していません。

そんなときに活躍するのがHLOOKUP関数です。この記事では基本の書き方からVLOOKUPとの違い、エラー対処まで紹介します。

スプレッドシートのHLOOKUP関数とは?

HLOOKUP関数(読み方: エイチルックアップ関数)は、範囲の上端行を横方向に検索する関数です。一致した列から、指定した行の値を返してくれます。

名前はHorizontal(水平)+ Lookup(検索)が由来です。「月名から売上を引っ張る」「支店名から経費を取得する」。こうした横方向の表引きを数式1つで片付けてくれます。

ポイントは検索する行が範囲の上端(1行目)にあることです。上端以外の行で検索したい場合は、XLOOKUP関数を検討してください。

HLOOKUP関数にできることをまとめると、次のとおりです。

  • 横方向に並んだ表から値を自動取得する
  • 月別・支店別など横向きのデータを検索する
  • 近似一致で料金ランク・成績判定を行う
  • ワイルドカードで部分一致検索をする

NOTE

HLOOKUP関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。

HLOOKUP関数の書き方(構文と引数)

基本構文

HLOOKUP関数の構文はこちらです。

=HLOOKUP(検索キー, 範囲, 番号, [並べ替え済み])

引数は4つあります。最後の「並べ替え済み」だけ省略できます。

引数の説明

引数必須/省略可意味指定例
検索キー必須上端行から探したい値。セル参照が一般的“4月”
範囲必須検索対象の表。上端行に検索キーを含むことB1:M3
番号必須上端行から数えて何行目を返すか(1以上)2
並べ替え済み省略可FALSE = 完全一致 / TRUE = 近似一致FALSE

NOTE

Excelでは「検索値・行番号・検索の型」と呼びますが、スプレッドシートでは「検索キー・番号・並べ替え済み」です。動作は同じなので、Excel経験者はそのまま読み替えてください。

「並べ替え済み」(FALSE / TRUE)の使い分け

ここがHLOOKUPでつまずきやすい部分です。

FALSE(完全一致) は、検索キーとぴったり一致するデータだけを探します。実務の9割はこちらです。一致しなければ#N/Aエラーになります。

=HLOOKUP("4月", B1:M3, 2, FALSE)

TRUE(近似一致) は、検索キー以下の最大値を返します。スコア帯やランク判定に使います。ただし上端行が昇順ソートされていることが前提です。

=HLOOKUP(A2, B1:F3, 2, TRUE)

NOTE

「並べ替え済み」を省略するとデフォルトはTRUEです。「なぜか変な値が返る」の原因は、たいていこの省略です。迷ったらFALSEを明示してください。

HLOOKUP関数の基本的な使い方

支店別の売上データから、特定の支店の値を取り出す例で見てみましょう。

次のような横方向の表があるとします。

 ABCDE
1 東京大阪名古屋福岡
2売上500350280200
3経費120806550
4利益380270215150

東京の利益(380)を取得するにはこう書きます。

=HLOOKUP("東京", B1:E4, 4, FALSE)

各引数の意味は次のとおりです。

  • “東京”: 検索キー(上端行から「東京」を探す)
  • B1:E4: 範囲(支店データ全体)
  • 4: 上端行から4行目(利益の行)を返す
  • FALSE: 完全一致で検索

行番号を「2」に変えれば売上(500)が返ります。「3」にすれば経費(120)を取得できますよ。

セル参照を使うこともできます。G1セルに支店名が入力されている場合は、こう書けます。

=HLOOKUP(G1, B1:E4, 4, FALSE)

G1の値を変更するだけで、取得する支店を切り替えられます。

HLOOKUP関数の実践的な使い方・応用例

月別データから特定月の値を取得する

実務では、月別に横方向に並んだ集計表をよく見かけますよね。こういったデータからHLOOKUP関数で特定の月の値を取り出せます。

次のような月別売上表があるとします。

 ABCDM
1 1月2月3月12月
2売上100120150200
3目標110110140190

3月の売上を取得するには、次のように入力します。

=HLOOKUP("3月", B1:M3, 2, FALSE)

結果は「150」です。番号を3にすれば、目標値(140)を取得できます。

IFERROR関数と組み合わせてエラーを回避する

HLOOKUP関数で検索キーが見つからないと、#N/Aエラーが表示されます。報告資料で見栄えが悪いですし、後続の計算にも影響します。

IFERROR関数(エラー時に別の値を返す関数)で囲めば解決です。

=IFERROR(HLOOKUP("札幌", B1:E4, 4, FALSE), "該当なし")

検索キーが見つからない場合に「該当なし」と表示されます。空文字「””」を指定するケースも多いです。

別シートのデータを横方向に検索する

検索先が別シートにある場合は、シート名のあとに「!」をつけて範囲を指定します。

=HLOOKUP("東京", マスタ!B1:E4, 2, FALSE)

シート名に空白を含む場合はシングルクォーテーションで囲みます。

=HLOOKUP("東京", '売上 マスタ'!B1:E4, 2, FALSE)

NOTE

別シートの範囲をマウスで選択すると、シート名と「!」が自動入力されます。手入力よりミスが減るのでおすすめです。

よくあるエラーと対処法

HLOOKUP関数を使っていると、思わぬエラーに遭遇することがあります。エラーの種類別に原因と対処法を整理しました。

#N/Aエラー

「検索キーが見つからない」という意味のエラーです。主な原因と対処法を表にまとめます。

原因確認ポイント対処法
値が存在しない上端行に該当データがあるかデータを追加するかIFERRORで対処
データ型の不一致数値と文字列が混在していないかVALUE関数で型を統一
余分なスペース見えない空白が入っていないかTRIM関数で除去

#REF!エラー

行番号が範囲の行数を超えているときに出ます。

たとえば範囲がB1:E3の3行なのに、番号に4を指定した場合です。範囲の行数を確認して、番号が範囲内に収まるよう修正してください。

#VALUE!エラー

番号に1未満の数値や文字列を指定したときに出ます。番号には必ず1以上の整数を指定しましょう。

間違った値が返る

エラーにはならないのに期待と違う値が返る。これが一番やっかいなケースです。

最も多い原因は「並べ替え済みを省略してTRUEになっている」パターンです。FALSEを明示すれば解決します。

もう1つは範囲の上端行が検索対象と一致していないケースです。範囲の開始行を見直してみてください。

VLOOKUPとの違い・使い分け

HLOOKUP関数とよく比較される検索関数との違いを表にまとめました。

特徴HLOOKUPVLOOKUPXLOOKUP
検索方向横方向(行)縦方向(列)縦横両方向
検索位置上端行のみ左端列のみ任意の範囲
デフォルトの一致方式近似一致(TRUE)近似一致(TRUE)完全一致
エラー時の既定値IFERROR必要IFERROR必要引数で指定可

どちらを使うべき?

判断基準はシンプルです。

  • データが横方向に並んでいる → HLOOKUP関数
  • データが縦方向に並んでいるVLOOKUP関数
  • 縦横どちらにも対応したいXLOOKUP関数

実務ではデータが縦方向に並ぶケースのほうが多いです。そのためVLOOKUPのほうが使用頻度は高くなります。

ただし、月別集計表やシフト表など横方向の表も少なくありません。そうした場面ではHLOOKUP関数が頼りになります。

NOTE

XLOOKUP関数は縦横両方に対応していますが、Googleスプレッドシートでも使えます。新しい関数に抵抗がなければ、XLOOKUPへの移行も選択肢です。

まとめ

HLOOKUP関数のポイントを振り返ります。

  • 名前はHorizontal(水平)+ Lookupが由来。横方向に検索する関数
  • 構文は =HLOOKUP(検索キー, 範囲, 番号, 並べ替え済み) の4引数
  • 「並べ替え済み」は省略せずFALSEを明示するのが安全
  • #N/Aエラーはデータ型の不一致やスペース混入を疑う
  • 縦方向の検索にはVLOOKUP関数を使う

まずは基本の完全一致検索からはじめてみてください。IFERRORと組み合わせれば、実務のほとんどの場面に対応できます。

関連記事

タイトルとURLをコピーしました