HLOOKUP関数って何?-知っていると便利かも
他の人が作成したExcelのワークシートで、VLOOKUP関数が使用されていることはよくありますが、HLOOKUP関数が使用されていることはあまりありません。
そのためかVLOOKUP関数はよく使うという方でも、HLOOKUP関数が使われているとこれは何という?という方も比較的多いようです。VLOOKUP関数が検索値を列方向に検索するのに対して、HLOOKUP関数は検索値を横方向に検索する関数です。
財務諸表や製品別の売上等を時系列に並べるということはよくあり、この一部の数値を使って、以下のような前年対比を行った資料を作成することもあります。通常は時系列データは別シートにまとめてあるということが多いと思いますが、以下の例では、便宜上同じシート上に表を作成しています。
形式や科目数・並び順などに変動がなければ、単に過去のデータを貼り付ければよいだけですが、それではうまく行かないことも多くあります。そのような場合、Excelの関数を使用して、前年の数値を時系列データがまとめられているシートから抽出することが考えられます。
上記の例の場合、すぐに思い浮かぶのは勘定コードをKEYに以下のようにVLOOKUP関数を使用するという方法です。
例で入力されている”=VLOOKUP(A10,$A$2:$F$5,4,0)”の「4」の部分を都度変更する必要はありますが、正しい式を一つ作成してコピーすればよいこともあり、よく見かける方法だと思います。
このような方法でもよいのですが、このような場合にHLOOKUP関数を使うという方法も考えられます。
HLOOKUPは、VLOOKUP関数と使い方が似ているので、以下のような式となります。
HLOOKUP(検索値, 範囲, 行番号, 検索の型)
ただし、上記の式だと意味があまりありません。というのは「行番号」にあたる「2」の部分を「3」「4」と変えていかなければ意図する数値をとってくることができないためです。上の例で考えると「勘定コード」の左側に列を挿入して連番を入力し、算式上そのセルを参照するという方法も考えられますが、そうするのであればVLOOKUP関数で列を都度指定した方が早いかもしれません。
そこで、行を指定するためにMATCH関数を組み合わせて以下のように使用すると、列を追加したりすることなく、意図した結果を実現することができます。MATCH 関数は、範囲 のセルの範囲で指定した項目を検索し、その範囲内の項目の相対的な位置を返す関数で、具体的には以下のような式になります。
MATCH(検査値, 検査範囲, [照合の型])
ただし、VLOOKUP関数を使用して抽出する列を関数を用いて指定することもできます。MATCH関数が便利なのは、範囲内の相対的な位置を返すことができるので、列方向の範囲にも行方向の範囲にも使うことができるという点です。したがってVLOOKUP関数とMATCH関数を使用して以下のように指定すると同様の結果を得ることができます。
そういった意味ではVLOOKUP関数、HLOOKUP関数というよりもMATCH関数を有効活用するとよいといえるのかもしれません。