横方向検索(HLOOKUP)
HLOOKUPは表形式になってるデータの中から、検索対象の行を検索して、合致した列に含まれる指定した行番号の値を取得するための関数です。(VLOOKUPが縦方向に検索するのに対して、HLOOKUPは横方向に検索します)。
=HLOOKUP(検索値, 対象範囲, 取得する行番号、検索タイプ)
対象範囲には表形式の左上から右下のセル範囲で指定します。また検索の対象となる列は一番上にある行で固定となっています。上端にある行を検索していき、該当する列が合った場合にその列の中で引数に指定した行番号(上から順に1,2,3,...)のセルを取得します。
検索タイプにはTRUR又はFALSEを指定します。省略した場合はTRUEとなります。TRUEの場合には検索した値が見つからなかった場合に、検索した値未満で最大の値を検索結果とします。(これが成功するには検索対象の行が昇順で並んでいなければなりません)。
例えば次のような記述となります。
=HLOOKUP("山田", A1:E3, 3, FALSE)
この例の場合、セルA1からセルE3までのセル範囲の表形式のデータから、1行目の値を検索し、見つかった場合はその列の上から3番目のセル(3行目の値)を取得します。
では実際に試して見ます。
1.元となるExcelを用意する
下記のようなExcelシートを用意します。
社員番号、社員名、有給消化日数の表があります。今回は社員番号で検索して、検索した社員の名前と有給消化日数を表示してみましょう。
2.検索結果を表示するセルを選択
まず名前を検索してみます。結果を表示するセルを選択します。
結果を表示するセルは「C9」です。
3.関数の設定
挿入する関数を選択します。メニューの「挿入」から「関数」を選択します。
「関数の検索」で「hlookup」を入力し、「関数名」で「HLOOKUP」が選択されていることを確認してから「OK」ボタンをクリックします。
まず「検索値」に検索する値を入力します。固定の値でも構いませんが、今回はセルC8に入力された値を検索したいので、値ではなくセルを指定しています。
次に「範囲」には検索対象となる表全体をセル範囲で指定します。ただし見出しは検索する必要がないので実際のデータが含まれているところだけで構いません。
「行番号」には表の上から数えて何番目の行の値を取得するかを数値で指定します。今回は社員名なので2番目です。
「検索の型」には検索が成功しなかった場合に近い値を表示するかどうかです。今回はFALSEにします。
最後に「OKボタンをクリックして下さい。
4.結果の表示
まだ検索する値を入力していないので、検索が成功せずに「#N/A」と表示されます。
ではセルC8に社員番号を入力してみて下さい。
入力した社員番号の社員名が表示されます。
では同じように社員番号で検索して社員の有給消化日数を表示してみましょう。セルC10に次のように入力します。
=HLOOKUP(C8,C2:F4,3,FALSE)
取得する行番号を3番目の列、つまり有給消化日数が表示された列に変更したものです。
違う社員番号を入力すれば、検索した社員番号の社員名と有給消化日数が表示されます。
( Written by Tatsuo Ikura )