データを検索する「LOOKUP」の関数を使いこなそう

膨大なデータの中から、目的の値を探せる「LOOKUP」関数。さまざまな作業の場面で活用できるので、ぜひ覚えておきましょう。関連する次の3つの関数について、詳しく紹介していきます。

・LOOKUP関数:1行または1列の範囲を検索して値を取り出す
・VLOOKUP関数:範囲を下に向かって検索して値を取り出す
・HLOOKUP関数:範囲を右に向かって検索して値を取り出す

LOOKUP関数

=LOOKUP(検査値,検査範囲,対応範囲)

LOOKUP関数は、1行または1列の範囲を検索して、対応する値を取り出してくれる関数です。関数の分類は「検索/行列」です。「ベクトル形式」と「配列形式」の2種類がありますが、ここでは「ベクトル形式」について解説します。

検査値:検索する文字列や数値、論理値などを指定します。
※全角文字と半角文字は区別されます
※英字の大文字と小文字は区別されません
検査範囲:検索する範囲を1行または1列で指定します
対応範囲:「検査範囲」に対応させる範囲を指定します

では、具体例をあげながら解説していきましょう!

商品管理データの例:ある商品コードに対応する商品名を取りだす

例えば以下のような商品データがあり、「A列に記載された商品コードが”2001”である商品について商品名を表示させた発注表を作成する」という場合を考えてみましょう。

LOOKUP関数を空白のセルに入力

E4セルに商品コードを入力し、F4セルに商品名を表示させるためのVLOOKUP関数を記述します。

LOOKUP関数で対応範囲の内容を表示する

必要な引数は次のようになります。
検査値:E4を指定します
検査範囲:《商品コード》の範囲であるA2:A7を指定します
対応範囲:《商品名》の範囲であるB2:B7を指定します

=LOOKUP(E4,A2:A7,B2:B7)

「検査範囲」と「対応範囲」の範囲の広さは一致していないとエラーになることがあるので、気をつけましょう。また、「検査範囲」の値が文字コードの昇順になっていないと、正しい値が返されない場合があります

LOOKUP関数は、「検査値」と一致するものが見つからない場合、エラーにはならず「検査値」未満の最大値を検索します。次に解説するVLOOKUP関数やHLOOKUP関数は、完全一致かそうでないかの指定をしてデータを検索できる特徴があります。

VLOOKUP関数

=VLOOKUP(検索値,範囲,列番号,検索方法)

VLOOKUP関数は、指定した範囲を下に向かって検索し、値を求める関数です。「V」は「Vertical(垂直、縦)」という意味で、関数の分類は「検索/行列」です。

検索値:検索する値、文字列などを指定します
※全角文字と半角文字は区別されます
※英字の大文字と小文字は区別されません
範囲:目的のデータが含まれる範囲を指定します
列番号:「範囲」の先頭の列を「1」として数えた「探したいデータがある列」の数を指定します
検索方法:完全に一致する値だけを検索したい場合は「FALSE」、近似値を含めて検索したい場合は「TRUE」を指定します

商品管理データの例:ある商品コードに一致する単価のデータを取りだす

例えば以下のような商品データの表があり、「A列に記載された商品コードが”2001”である商品について単価を表示させた受注表を作成する」という場合を考えてみましょう。

VLOOKUP関数を空白セルに入力する

VLOOKUP関数は、指定した範囲の左端列を縦方向に、行単位で検索します。
F4セルには商品コードを入力し、G4セルに単価を表示させるためのVLOOKUP関数を記述します。

必要な引数は次のようになります。
検索値:F4を指定します
範囲:データを検索する範囲全体はA2:C7ですが、この範囲記述は「相対参照」のため、式をコピペすると範囲がA3:C8のようにずれてしまいます。範囲を固定したい場合は $A$2:$C$7 のように「$」を使った「絶対参照」で指定しましょう。また、範囲に表の見出しは含みません。
列番号:探したいデータは《単価》が入力されたC列なので、「範囲」の先頭列であるA列を「1」として数え、「列番号」には「3」を指定します
検索方法:完全に一致する値だけを検索したいので「FALSE」を指定します

VLOOKUP関数で対象の内容を表示する

以下のように記述すると、商品コード「2001」に対応する単価が表示されます。

=VLOOKUP(F4,A2:C7,3,FALSE) 範囲を相対参照する場合
または
=VLOOKUP(F4,$A$2:$C$7,3,FALSE) 範囲を絶対参照する場合

ポイントになるのが、『検索は「範囲」で指定した左端列で行われる』ということです。VLOOKUP関数は、指定した範囲の左端列を縦方向に、行単位で検索します。今回の例のように、検索したいキーとなるのが《商品コード》の場合、範囲の指定はA列から始まる必要があります。範囲が複数列にわたって指定されていても、検索するのはあくまでその左端の列であることをおさえておきましょう

コピペをしても範囲指定が変わらない

G5セル・G6セルにVLOOKUP関数をコピペしても、絶対参照で記述しておけば、範囲指定は変わりません。商品コードに対応した単価が、それぞれ表示されています。

商品管理データの例:ある金額の近似値を含めて商品を検索する

検索方法に「TRUE」を指定すると、もし検索値が見つからなかった場合には検索値を超えない最大値を検索します。例えば、以下のような商品データがあり、「予算別に商品を探したい」という場合を考えてみましょう。

VLOOKUP関数を使いある金額の近似値を含めて商品を検索する

「TRUE」を指定する場合、検索する範囲の左端(この場合は《単価》)が昇順になるよう、データを事前に整えておく必要があります。
D4セルに予算を入力し、E4セルにその金額以下の商品名を表示させるためのVLOOKUP関数を記述します。

関数の記述に必要な引数は次のようになります。
検索値:予算である「120,000」を記述したD4を指定します
範囲:検索を行う《単価》を、範囲の左端として指定します。絶対参照にしたい場合は$A$2:$B$7と記述します
列番号:探したいデータは《商品名》が入力されたB列なので、「範囲」の先頭列であるA列を「1」として数え、「列番号」には「2」を指定します
検索方法:近似値を含めて検索する「TRUE」を指定します

VLOOKUP関数で対象の内容を表示する

結果を表示させたいE4セルに以下のように記述すると、予算120,000円を超えない最大の金額(119,800円)が単価となっている商品名が表示されます。

=VLOOKUP(D4,$A$2:$B$7,2,TRUE)

コピペをしても範囲指定が変わらない

E5セルにVLOOKUP関数をコピペしても、絶対参照で記述しておけば、範囲指定は変わりません。予算150,000円を超えない最大の金額(142,800円)が単価となっている商品名が表示されます。

HLOOKUP関数

=HLOOKUP(検索値,範囲,行番号,検索方法)

VLOOKUP関数が指定した範囲を下に向かって検索したのに対し、HLOOKUP関数は横に向かって検索し、値を求める関数です。「H」は「Horizon(水平、横)」の意味で、関数の分類は「検索/行列」です。行・列の扱いが異なるほかは、VLOOKUP関数と考え方は同じです。

商品管理データの例:ある商品コードに一致する単価のデータを取りだす

例えば、以下のような商品データがあり、「1行目に記載された商品コードが”1004”である商品について単価を表示させた発注表を作成する」という場合を考えてみましょう。

HLOOKUP関数を空白セルに入力する

HLOOKUP関数は、指定した範囲の上端行を横方向に、列単位で検索します。
B7セルに商品コードを入力し、B8セルに単価を表示させるためのHLOOKUP関数を記述します。

HLOOKUP関数で対象の内容を表示する

必要な引数は次のようになります。
検索値:B7を指定します
範囲:$B$1:$F$3を指定します(絶対参照で範囲を固定させたい場合)
行番号:探したいデータは《単価》が入力された3行目なので、「範囲」の先頭である1行目を「1」として数え、「行番号」には「3」を指定します
検索方法:完全に一致する値だけを検索したいので「FALSE」を指定します

以下のように記述すると、商品コード「1004」に対応する単価データが表示されます。

=HLOOKUP(B7,$B$1:$F$3,3,FALSE)

まとめ

今回は、データ検索ができるLOOKUP関数をはじめ、VLOOKUP関数やHLOOKUP関数についてご紹介しました。引数の範囲の設定など、少しややこしく感じる部分もありますが、実際に表を作って試してみると、案外簡単かもしれません。さまざまな業務において使う頻度の高い関数なので、ぜひ覚えたいですね。