OfficeType

Excel~HLOOKUP関数で必要なデータを抽出しよう~エクセル

エクセルで列ごとに整理されたデータからキーワードを検索して必要なデータを抽出するHLOOKUP関数について説明します。

  • HLOOKUP関数の書式は=HLOOKUP(検索値, 範囲, 行番号, [検索方法])になります。
  • 検索値は指定したデータの範囲の一番上の行からデータを抽出したい項目の値や文字列を指定します。
  • 範囲はデータの範囲を指定します。
  • 行番号は抽出したいデータが範囲の中で何行目かを指定します。
  • [検索方法]は完全一致で検索したい場合はFALSEをしていします。近似一致の場合はTRUEになります。

完全一致

下の画像の例で、商品"みかん"の単価を抽出してセルB7に表示したい場合はセルB7に=HLOOKUP(B6,B1:F4,2,FALSE)と入力しEnterを押します。

検索値はセルB6に入力された"みかん"を参照するのでB6になります。

範囲はセルB1からセルF4の表のデータ部分を指定するのでB1:F4になります。

行番号は単価の項目は範囲の中の2行目なので2になります。

[検索方法]は完全一致の場合はFALSEを指定します。

つまりセルB7に=HLOOKUP(B6,B1:F4,2,FALSE)と入力しEnterを押すと、"みかん"の単価30が表示されます。

近似一致

[検索方法]はの完全一致と近似一致の違いは、例えば検索値を100としたときに完全一致の場合は100だけが検索の対象になりますが、近似一致の場合は100が存在しないばあいは100未満の最大値が検索の対象になります。

下の画像の例はセルA1からセルG2の表がポイント数に応じた獲得商品になります。0ポイントから99ポイントは獲得商品がティッシュ、100ポイントから199ポイントは獲得商品がタオルを意味します。この例でセルB6にAさんの獲得商品を表示したい場合はセルB6に=HLOOKUP(B5,$B$1:$G$2,2,TRUE)と入力しEnterを押します。オートフィルした時に範囲がズレないように範囲に絶対参照$を使用しています。

検索値はセルB5に入力されたAさんのポイント146を参照するのでB5になります。

範囲はセルB1からセルG2の表のデータ部分を指定するので$B$1:$G$2になります。

行番号は獲得商品の項目は範囲の中の2行目なので2になります。

[検索方法]は近似一致の場合はTRUEを指定します。

つまりセルB6に=HLOOKUP(B5,$B$1:$G$2,2,TRUE)と入力しEnterを押すと、Aさんのポイントは146なので獲得商品の表の中に146は存在しないため146未満の最大値である100の獲得商品である"タオル"が表示されます。

セルB6からセルG6までオートフィルすればAさん~Fさんの獲得商品も表示されます。

検索値にワイルドカードを使う

ワイルドカードは*(アスタリスク)か?(クエスチョンマーク)を使います。*は文字数無制限の文字列を意味します。例えば"あ*"は最初に"あ"を含む文字列を意味します。"あいうえお"でも"あい"でも条件に一致したとみなされます。"*お"は最後に"お"を含む文字列を意味します。"あいうえお"でも"えお"でも条件に一致するとみなされます。?は1文字を意味します。たとえば"あ?"は最初に"あ"を含む2文字を意味します。"あい"や"あう"は条件に一致しますが、"あいう"は条件に一致しません。最初に"あ"を含む3文字を条件にしたい場合は"あ??"とします。

下の画像の例で、セルA5にCさんのポイントを表示したい場合はセルA5に=HLOOKUP(B4&"*",B1:G2,2,FALSE)と入力しEnterを押します。

検索値はセルB4に入力されたCさんを参照してCさんの後ろに任意の文字列を含むことを表すのでワイルドカードと連結させて、B4&"*"とすればCさん*と表現できます。これでCさんの後ろに(2班)がついていても検索できます。

範囲はセルB1からセルG2の表のデータ部分を指定するのでB1:G2になります。

行番号は獲得商品の項目は範囲の中の2行目なので2になります。

[検索方法]は完全一致の場合はFALSEを指定します。

つまりセルB4に=HLOOKUP(B4&"*",B1:G2,2,FALSE)と入力しEnterを押すと、Cさんのポイント1000が表示されます。

ワイルドカードを使わなければCさんとCさん(2班)は一致しないので検索値が存在せずエラーになります。

#N/Aエラー

検索値が存在しない場合は#N/Aエラーになります。

下の画像の例で、セルB7に=HLOOKUP(B6,B1:F4,2,FALSE)と入力しEnterを押すと検索値はセルB6を参照していてB6には"ぶどう"が入力されていて、商品に"ぶどう"は存在しないため#N/Aエラーになります。

#REF!エラー

行番号が範囲の行数を超えている場合は#REF!エラーになります。

下の画像の例で、セルG2に=HLOOKUP(B6,B1:F4,5,FALSE)と入力しEnterを押すと行番号は5で範囲の行数は4行なので#REF!エラーになります。