Googleスプレッドシートで指定した値に一致するデータを見つけたい場合は、HLOOKUP関数を使用します。
このページでは、HLOOKUP関数の使い方をわかりやすく解説しています。
INDEX
HLOOKUP関数とは?VLOOKUP関数との違い
HLOOKUPとは 「Horizontal Lookup」の略で、水平方向(横)にデータを探すことができる関数です。
類似の関数にVLOOKUP関数、XLOOKUP関数があります。
それぞれの違いは、
・垂直方向(縦)にデータを検索する場合は「VLOOKUP関数」
・水平方向(横)にデータを検索する場合は「HLOOKUP関数」
で、参照するデータが縦に並んでいるか、横に並んでいるかで使い分けます。
またXLOOKUP関数は縦横どちらもでき、VLOOKUP、HLOOKUP関数と同じことができる関数です。
このページではHLOOKUP関数の使い方をわかりやすく解説します。
スプレッドシートのHLOOKUP関数の使い方
今回は商品一覧にあるデータを使った例で解説します。
商品コード(品番)を入れたら、商品一覧の表から該当する商品名と単価を自動的に表示したい
商品名を表示
関数は、商品名を表示させるセルに入力します。
1. 商品名を表示したいセルを選択します(今回はセルC4)
2. 以下のようにHLOOKUPの数式を入力します。
=HLOOKUP(B4,'商品一覧'!B3:D5,2,FALSE)
HLOOKUP関数を使用するには、4つの情報(=引数)を指定します。
- [検索キー]検索をする時に使用するデータ(表からデータを探すための検索する値)
- [範囲]データを探しに行くセル範囲
- [番号]範囲指定した中の何行目を答えとして返したいかの行の番号
- [並べ替え済み]完全一致でデータを検索する場合は「FALSE」を指定
(TRUE =近似一致)
HLOOKUPでは、検索キーが範囲の一番上の行に表示されるように指定します。
上記の例で商品名は範囲の2行目にあるので、
番号で「2」と入力することで、[範囲]の2行目にある商品名が表示されます。
セルB4の商品コード(1001)に一致するデータの2行目にある「いちご」が結果に表示される。
- HLOOKUP関数は、範囲で設定したデータの上にあるデータを取り出すことができません。範囲の一番上の行から検索キーを検索します。
- 他のセルにコピーするときに範囲が変わってしまわないように範囲を選択の時は絶対参照($付き)で指定します。
- 検索キーに一致するデータが範囲に2つ以上ある場合は、一番最初に見つかった値を返します。
- 並び替え済みは一般的には「FALSE(もしくは0)」を指定します。
- TRUE(もしくは省略)を指定すると、近似一致となり、データが一致していない場合、一番近い値を表示します。
- 詳しい使い方はページ下部の応用の使い方の説明を確認してください。
単価を表示
1. 単価を表示したいセルを選択します(今回はセルD4)
2. 以下のようにHLOOKUPの数式を入力します。
=HLOOKUP(B4,'商品一覧'!B3:D5,3,FALSE)
[番号]を「3」と入力することで、[範囲]の3行目にある単価を結果として使う指定になります。
セルB4の商品コード(1001)に一致するデータの3行目にある「¥450」が結果に表示される。
HLOOKUP関数を部分一致で検索するワイルドカードの使い方
HLOOKUP関数で検索キーを部分一致(○○を含む、○○から始まる、○○で終わる)で一致するデータを探す場合にはワイルドカードを使用します。
ワイルドカードで指定する場合は、「*(アスタリスク)」をダブルクォーテーションで囲み「&」で結合します。
商品名の部分一致で商品名を表示させたい
=HLOOKUP("*"&B3&"*",商品一覧!$B$3:$D$5,1,FALSE)
部分一致で使用する時は検索値の前後に「*」(アスタリスク)を&でつなげることで「含む」という条件にすることができます。
含む
検索キーの前後に『*』をつけます。
=HLOOKUP(""&B3&"",商品一覧!$B$3:$D$5,2,FALSE)
前方一致(○○から始まる)
=HLOOKUP(B3&"*",商品一覧!$B$3:$D$5,2,FALSE)
検索キーの後ろに『*』をつけると「◯◯から始まる」の意味になります。
後方一致(○○で終わる)
検索キーの前に『*』をつけると「◯◯で終わる」の意味になります。
=HLOOKUP("*"&B3,商品一覧!$B$3:$D$5,2,FALSE)
条件により結果を複数にわける(TRUE=近似値の使い方)
○以上△未満のような条件でデータを見つけたい場合は、4つ目の指定項目である並び替え済みを「TRUE」に設定することで完全一致ではなく○以上△未満での分類ができます。
TRUEもしくは省略した場合、一致するデータが見つからない場合は、最も近いデータを検索します。
この時、範囲で指定したデータは昇順に並べ替えておく必要があります。
並び替えをしていない場合、間違った値が表示されてしまいます。
表にある分類を基に、購入金額に応じた配送料を表示させたい
例えば以下のような条件で結果を分けたい時、通常はIF関数を複数入れ子にするかIFS関数を使用して条件に合わせて結果を複数に分けるのが一般的です。
- 購入金額が¥0〜¥2,000は送料が「1,000」
- 購入金額が¥2,001〜¥5,000は送料が「¥800」
- 購入金額が¥5,000〜は送料が「¥500」
上記のように条件で結果をわけたい場合、分類が多いとIF関数やIFS関数では入力項目が増え入力が大変です。
そのような場合はHLOOKUP関数の並び替え済みの項目を「TRUE」にすると近似値での使い方で同様のことが簡単にできます。
IFERROR関数を一緒に使ってHLOOKUP関数でエラーを出さないようにする
HLOOKUP関数で一致するデータがない時、検索するIDなどが入力されていない時にはエラーが表示されます。
このような時、エラーを表示させたくない場合は、以下のようにIFERROR関数を使用し、エラーを任意の文字などに変換します。
=IFERROR(HLOOKUP(B3,商品一覧!$B$3:$D$5,2,FALSE),"-")
IFERROR関数の詳しい解説、使い方は以下のページで説明しています。
Googleスプレッドシートでの解説ですがExcelでも使い方はまったく一緒です。
スプレッドシートのHLOOKUPの構文
HLOOKUP(エイチルックアップ)は、テーブル内のデータを参照して検索するための関数です。
GoogleスプレッドシートのHLOOKUP関数の構文は次のとおりです。
=HLOOKUP(検索キー, 範囲,番号,並び替え済み)
引数 | 説明 |
---|---|
検索キー | 検索する値。 |
範囲 | [検索キー]で指定したデータを探しに行く表の範囲を指定します。 指定したセル範囲の一番上の行に指定した[検索キー]があるように範囲を指定します。 |
番号 | [範囲]で設定した中から何行目を表示したいか、使用したいデータが左から何行目かを数字で指定します。 |
並べ替え済み | 完全一致か近似一致かを指定します。 TRUEまたは省略:近似一致となります。 |