LOOKUP関数をマスターすることは、Excelのデータ検索を効率的に行う上で欠かすことができない要素です。
本記事では、LOOKUP関数の基本的な情報や使い方、他の検索関数との違いについて詳しく解説します。具体的なサンプルデータを使い、LOOKUP関数の検索方法や複数条件での検索など応用的な検索方法についても触れているので、この記事の内容を理解するだけでもLOOKUP関数を使いこなせるでしょう。
チャット一括管理アプリ「OneChat」が今なら初月無料!!
OneChatのダウンロードはこちらから
LOOKUP関数とは?
LOOKUP関数とはどのような関数なのかについて理解を深めましょう。
LOOKUP関数の基本概念
LOOKUP関数とは、Excelにおいて特定の値の検索を行い、その値に対応する別の値を返すことに用いられるツールのことです。この関数では、指定した範囲内で特定の値に一致する値の検索を行い、同じ位置にある他の範囲の値を返すことができます。
他の検索関数との違い(VLOOKUP, HLOOKUP, INDEX, MATCHとの比較)
LOOKUP関数以外にも、Excelには様々な検索関数が用意されています。
それぞれの検索関数の特徴についてみていきましょう。
関数名 | 概要 | 検索の方向 |
LOOKUP | 指定した値を指定した範囲から検索し、その位置に対応する値を返す | 縦・横方向 |
VLOOKUP | 指定した列番号の範囲から、指定した値に対応する値を返す | 縦方向(列) |
HLOOKUP | 指定した行番号の範囲から、指定した値に対応する値を返す | 横方向(行) |
INDEX | 指定した範囲内の指定した位置にある値を返す | – |
MATCH | 指定された範囲内で指定した値の位置を返す | – |
参考:
LOOKUP関数の基本的な使い方
LOOKUP関数の基本的な使い方についてみていきましょう。
基本構文と引数の説明
LOOKUP関数の基本構文は次の通りです。
=LOOKUP(検索値, 検索範囲 , [対応範囲])
それぞれの引数について詳しくみてみましょう。
引数 | 詳細 |
検索値 | 検索を行いたい値を入力します。 |
検索範囲 | 検索値の検索を行う範囲を指定します。この範囲は単一行、または単一列を指定します。また、この範囲は昇順でソートされていなければなりません。 |
対応範囲 | 検索値に対応する値が存在する範囲を選択します。対応範囲は、検索範囲で指定したサイズと同一にしておく必要があります。 |
縦方向検索と横方向検索の違い
LOOKUP関数の縦方向検索と横方向検索の違いについて解説します。
LOOKUP関数は、指定した範囲内で値の検索を行い、対応する値を返してくれる関数です。この関数は、縦方向(列)の検索と横方向(行)の検索の両方を行うことができますが、それぞれの用い方については若干の違いがあります。
主な違いは以下の通りです。
検索方向 | 使用ポイント |
縦方向の検索 | 列を対象として検索を行う場合に主に用いられる。例えば、商品IDをもとに列の検索を行い、対応する価格を別の列から取得するなどに便利です。 |
横方向の検索 | 行を対象として検索を行う場合に主に用いられる。例えば、月別のデータを行から検索し、対応する売上を別の行から取得するなどに便利です。 |
サンプルデータを用いた具体例
サンプルデータを用いて、LOOKUP関数の基本的な使い方について解説します。
具体的なデータから、LOOKUP関数を用いて値の検索を行い、対応する値を返す例をみていきましょう。
縦方向検索の場合
行\列 | A | B | C | D |
1 | 品番 | 商品名 | 単価 | 販売数 |
2 | 101 | Apple | 100 | 15 |
3 | 102 | Banana | 120 | 12 |
4 | 103 | Cherry | 110 | 10 |
5 | 104 | Grape | 180 | 15 |
6 | 105 | Peach | 200 | 8 |
「品番」の「102」を検索して、その値に対応する「商品名」を取得するとします。
この場合の数式は次の通りです。
=LOOKUP(102, A2:A6, B2:B6)
上記数式の引数の説明は次の通りです。
検索値は検索対象の「品番」である「102」
検索範囲は検索値が存在する列である「A2:A6」
結果範囲は取得したい値である「商品名」が存在する列である「B2:B6」
この数式では、「A2~A6」の範囲内で「102」の値を検索し、「B2~B6」に存在する対応する値を返します。
そのため、この数式の結果は「Banana」となります。
横方向検索の場合
行\列 | A | B | C | D | E | F |
1 | 品番 | 101 | 102 | 103 | 104 | 105 |
2 | 商品名 | Apple | Banana | Cherry | Grape | Peach |
3 | 単価 | 100 | 120 | 110 | 180 | 200 |
4 | 販売数 | 15 | 12 | 10 | 15 | 8 |
「品番」の「103」を検索して、その値に対応する「商品名」を取得するとします。
この場合の数式は次の通りです。
=LOOKUP(103, B1:F1, B2:F2)
上記数式の引数の説明は次の通りです。
検索値は検索対象の「品番」である「103」
検索範囲は検索値が存在する列である「B1:F1」
結果範囲は取得したい値である「商品名」が存在する列である「B2:F2」
この数式では、「B1〜F1」の範囲内で「103」の値を検索し、「B2〜F2」に存在する対応する値を返します。
そのため、この数式の結果は「Cherry」となります。
LOOKUP関数の応用例
LOOKUP関数の応用例についていくつか解説します。
複数条件での検索
LOOKUP関数は、複数条件での検索を行うことができません。そのため、複数条件を用いて検索を行いたい場合は他の手段を用いる必要があります。Excelにおいて複数条件での検索を行う場合は、主に次の2つのどちらかの手段を用いると良いでしょう。
- INDEX関数とMATCH関数を組み合わせて用いる
- SUMPRODUCT関数を用いる
下記のデータをもとに、「佐藤 拓海がBananaを購入した数量」の条件で検索する場合の数式について解説します。
行\列 | A | B | C |
1 | 名前 | 商品 | 購入数 |
2 | 佐藤 拓海 | Apple | 10 |
3 | 鈴木 花子 | Banana | 20 |
4 | 佐藤 拓海 | Cherry | 15 |
5 | 鈴木 花子 | Apple | 5 |
6 | 佐藤 拓海 | Banana | 25 |
関数 | 数式 | 結果 |
INDEX+MATCH | =INDEX(C2:C6, MATCH(1, (A2:A6=”佐藤 拓海”)*(B2:B6=”Banana”), 0)) | 25 |
SUMPRODUCT | =SUMPRODUCT((A2:A6=”佐藤 拓海”)*(B2:B6=”Banana”)*C2:C6) | 25 |
ネストされたLOOKUP関数の使用例
ネストされたLOOKUP関数は、LOOKUP関数の引数内に他のLOOKUP関数を入力することで、複数の検索を連続で行う際に用いられます。ネストされたLOOKUP関数を用いることで、より複雑な検索や関連性のあるデータを見つけることが可能となります。
以下では、ネストされたLOOKUP関数の使用例について紹介します。
複数の検索値を用いてデータ検索を行う
行\列 | A | B | C | D |
1 | 商品名 | カテゴリ | 単価 | 産地 |
2 | Apple | 果物 | 100 | 青森 |
3 | Banana | 果物 | 120 | 宮崎 |
4 | Carrot | 野菜 | 130 | 北海道 |
5 | Cherry | 果物 | 110 | 山形 |
6 | Eggplant | 野菜 | 120 | 高知 |
7 | Grape | 果物 | 180 | 山梨 |
8 | Peach | 果物 | 200 | 岡山 |
上記データをもとに、商品名から対応する産地の検索を行い、この産地に基づいて単価の算出を行います。
例:商品名「Banana」のカテゴリを検索し、それをもとに単価を算出します。この場合のLOOKUP関数の数式は次の通りです。
=LOOKUP(LOOKUP(“Banana”, A2:A8, D2:D8), D2:D8, C2:C8)
この数式では、内側のLOOUP関数「LOOKUP(“Banana”, A2:A8, D2:D8)」でA列の商品名から「Banana」の検索を行い、D列の産地から対応する値を返す計算を行います。この式の結果は「宮崎」です。
続いて、外側のLOOKUP関数「LOOKUP(“宮崎”, D2:D8, C2:C8)」でD列の産地から「宮崎」を検索し、C列の単価から対応する値を返す計算を行います。
結果:120
大量データに対する効率的な検索方法
LOOKUP関数を用いて大量データに対する効率的な検索方法について解説します。LOOKUP関数はシンプルで使いやすいですが、大量のデータに対して検索を行う場合はパフォーマンスが低下してしまうこともあります。以下では、LOOKUP関数を効率的に用いるための方法や、代替の手段について紹介します。
①LOOKUP関数の効率化
LOOKUP関数は、検索範囲に指定したデータが昇順にソートされている場合に最もパフォーマンスを発揮します。そのため、LOOKUP関数で効率的に検索したい場合は検索範囲をあらかじめ昇順にソートしておきましょう。
②VLOOKUP・HLOOKUP関数を用いる
LOOKUP関数と似た機能を持つ関数として、VLOOKUP・HLOOKUP関数があります。これらは、特定の列、または行から値の検索を行ってくれ、データ量が膨大である場合はこれらの関数を用いることで効率を上昇させることができます。
③XLOOKUP関数を用いる
利用しているExcelのバージョン(Excel365、または2019以降)によっては、XLOOKUP関数が導入されている場合があり、膨大なデータ量の検索を行う場合はこちらを用いると効率的に処理することができます。XLOOKUP関数は、VLOOKUP関数やHLOOKUP関数の代替手段となる関数で、2つの関数よりも柔軟性が高くなっています。
LOOKUP関数の実践例
LOOKUP関数の実践例について紹介します。
業務効率化のための実践的な活用事例
LOOKUP関数を業務効率化に用いた活用例についていくつかみていきましょう。
①在庫管理
在庫管理にLOOKUP関数を用いて各商品の在庫数のチェックを効率化することができます。
行\列 | A | B | C |
1 | 品番 | 商品名 | 在庫数 |
2 | 101 | Apple | 30 |
3 | 102 | Banana | 55 |
4 | 103 | Cherry | 20 |
5 | 104 | Grape | 40 |
6 | 105 | Peach | 45 |
上記データをもとに品番の入力を行うことで、対応する商品名と在庫数の取得を行います。この場合の数式はそれぞれ以下の通りです。
例:品番「103」に対応する商品名と在庫数を取得する場合
数式概要 | 数式 | 結果 |
商品名取得 | =LOOKUP(“103”, A2:A6, B2:B6) | Cherry |
在庫数取得 | =LOOKUP(“103”, A2:A6, C2:C6) | 20 |
②顧客データ参照
顧客データ参照にLOOKUP関数を用いることで簡単に必要な情報を取得することができます。
行\列 | A | B | C |
1 | 顧客ID | 顧客名 | 電話番号 |
2 | 101 | 佐藤 拓海 | 050-4567-8901 |
3 | 102 | 鈴木 花子 | 080-2345-6789 |
4 | 103 | 高橋 亮 | 090-1234-5678 |
5 | 104 | 田中 美咲 | 090-0567-890 |
6 | 105 | 山本 健太 | 070-3456-7890 |
上記データをもとに、LOOKUP関数を用いて顧客IDから対応する顧客名と電話番号の取得を行います。この場合のそれぞれの数式は以下の通りです。
例:顧客ID「103」に対応する顧客名と電話番号を取得する場合
数式概要 | 数式 | 結果 |
顧客名取得 | =LOOKUP(“103”, A2:A6, B2:B6) | 高橋 亮 |
電話番号取得 | =LOOKUP(“103”, A2:A6, C2:C6) | 090-1234-5678 |
実際のビジネスシナリオでの使用例
実際のビジネスシナリオでのLOOKUP関数の使用例についていくつか紹介します。
①商品価格を自動更新する
例:会社の販売管理システムにおける商品の価格表を最新に保つため、各商品の価格の更新を自動的に行うシステムをLOOKUP関数を用いて行う
価格表
行\列 | A | B | C |
1 | 品番 | 商品名 | 現在の価格 |
2 | 101 | Apple | 100 |
3 | 102 | Banana | 120 |
4 | 103 | Cherry | 110 |
5 | 104 | Grape | 180 |
6 | 105 | Peach | 200 |
新価格表
行\列 | A | B |
1 | 品番 | 新価格 |
2 | 101 | 120 |
3 | 102 | 130 |
4 | 103 | 100 |
5 | 104 | 150 |
6 | 105 | 210 |
この例において、品番をもとに価格表の価格を新価格に更新するための数式は次の通りです。
=LOOKUP(A2, ‘新価格表’!A:A, ‘新価格表’!B:B)
価格表の品番(A列)のデータをもとに、新価格表の品番(A列)の検索を行い、新価格表の新価格(B列)より対応する新価格の値の取得を行います。この数式を各商品の価格入力セルに適用しておくことにより、商品価格が更新されるたびに自動的に新価格が反映されます。
②プロジェクトの予算チェックを行う
例:複数のプロジェクトの予算・実際の支出の管理において、各プロジェクトの支出が予算内であるかのチェックをLOOKUP関数を用いて行う
プロジェクト予算表
行\列 | A | B | C |
1 | プロジェクトNo | プロジェクト名 | 予算(万円) |
2 | N001 | Project Alpha | 5,000 |
3 | N002 | Project Beta | 7,500 |
4 | N003 | Project Gamma | 6,000 |
5 | N004 | Project Delta | 8,000 |
6 | N005 | Project Epsilon | 8,500 |
支出履歴
行\列 | A | B |
1 | プロジェクトNo | 支出額(万円) |
2 | N001 | 4,500 |
3 | N002 | 7,200 |
4 | N003 | 5,800 |
5 | N004 | 8,500 |
6 | N005 | 6,800 |
この例において、各プロジェクトの予算内に支出が収まっているかをチェックする数式は次の通りです。
=IF(LOOKUP(A2, ‘支出履歴’!A:A, ‘支出履歴’!B:B) <= B2, “予算内”, “予算オーバー”)
プロジェクト予算表のプロジェクトNo(A列)をもとに、支出履歴のプロジェクトNo(A列)から対応する支出額の値の取得をし、その支出額がプロジェクト予算表の予算内(C列)に収まっているかどうかをLOOKUP関数によりチェックします。上記数式では、IF関数と組み合わせることにより、支出額が予算に収まっていれば「予算内」、超えていれば「予算オーバー」と表示されます。
他の検索関数との連携
LOOKUP関数と他の検索関数との連携について紹介します。
VLOOKUP、HLOOKUP、INDEX、MATCHとの組み合わせ
Excelには、LOOKUP以外にもVLOOKUP、HLOOKUP、INDEX、MATCHなどの検索関数が用意されています。これらの関数を組み合わせて用いることにより、より効率的・柔軟にデータ検索や参照を行うことができます。
以下では、各検索関数を組み合わせた使用例についていくつか紹介します。
①VLOOKUP+MATCH
MATCH関数により列番号の取得を動的に行い、VLOOKUP関数で対応する値を検索することができます。
行\列 | A | B | C | D |
1 | 顧客ID | 顧客名 | 電話番号 | 住所 |
2 | 101 | 佐藤 拓海 | 050-4567-8901 | 東京都新宿区西新宿2-8-1 |
3 | 102 | 鈴木 花子 | 080-2345-6789 | 大阪府大阪市北区梅田3-4-5 |
4 | 103 | 高橋 亮 | 090-1234-5678 | 愛知県名古屋市中区錦1-9-3 |
5 | 104 | 田中 美咲 | 090-0567-890 | 北海道札幌市中央区大通西4-7-2 |
6 | 105 | 山本 健太 | 070-3456-7890 | 福岡県福岡市博多区博多駅前1-2-6 |
例:上記データから顧客IDをもとに、対応する電話番号の取得を行う
この場合の数式は次の通りです。
=VLOOKUP(“102”, A2:D6, MATCH(“電話番号”, A1:D1, 0), FALSE)
結果:080-2345-6789
②INDEX+MATCH
行と列の両方に対する動的な検索を行うことができます。
行\列 | A | B | C | D |
1 | 商品名 | カテゴリ | 単価 | 産地 |
2 | Apple | 果物 | 100 | 青森 |
3 | Banana | 果物 | 120 | 宮崎 |
4 | Carrot | 野菜 | 130 | 北海道 |
5 | Cherry | 果物 | 110 | 山形 |
6 | Eggplant | 野菜 | 120 | 高知 |
7 | Grape | 果物 | 180 | 山梨 |
8 | Peach | 果物 | 200 | 岡山 |
例:上記データから品番と列名をもとに、対応する価格の取得を行う
この場合の数式は次の通りです。
=INDEX($B$2:$D$8, MATCH(A2, $A$2:$A$8, 0), MATCH(“単価”, $B$1:$D$1, 0))
結果:100
複雑な検索ニーズに応じた関数の使い分け
Excelの検索関数に関して、用途やシナリオに応じた関数の使い分けについて解説します。
関数 | 概要 | おすすめシーン |
VLOOKUP | 指定した範囲内において値を縦方向に検索し、同じ行の指定した列より値を返す | 単純な縦方向の検索をする |
HLOOKUP | 指定した範囲内において値を横方向に検索し、同じ列の指定した行より値を返す | 単純な横方向の検索をする |
INDEX + MATCH | 縦と横の両方向に対して柔軟な検索ができ、V・HLOOKUP関数の制限を回避することができる | 柔軟に縦横両方向の検索をする |
VLOOKUP + MATCH | 列番号を動的に指定し検索ができるため、列の順序が変更されても対応することができる | 動的な列指定で検索をする |
XLOOKUP | 検索方向の制限がなく、エラーハンドリングや検索モードを指定して検索することができる | より高度な検索をする |
よくある質問
LOOKUP関数に関連するよくある質問について紹介します。
Excel関数「XLOOKUP」は何がすごいのか「vlookup」との違い?
XLOOKUP関数は、VLOOKUP関数に比べて多くの利点があります。
2つの関数の主な違いについて比較します。
XLOOKUP | VLOOKUP | |
検索方向の違い | 検索方向に制限はなく、縦横(列行)両方の検索が可能 | 縦方向(列)のみの検索が可能 |
検索の型 | 完全一致検索のみ(データの正確性を向上させるため) | デフォルトは近似一致(TRUE)で検索だが、完全一致を選択することも可能 |
返される値の列の指定 | 列番号の指定ではなく、結果を返す列範囲を直接指定できるため、列の位置が変わった場合も正しい値を返すことが可能 | 検索範囲内で返される値の列番号を指定するため、列の位置が変わると正しい値が返せなくなる |
検索値が見つからない | 検索値が見つからない場合に返す値を指定することができる | 検索値が見つからない場合は「#N/A」エラーが返されるため、エラー時の値を指定したい場合は他の関数と組み合わせる必要がある |
複数条件を指定して検索 | 複数条件を指定して検索することが可能 | 単一条件の検索のみ可能 |
Excel関数のlookupとvlookupの違いは何ですか?
Excel関数のLOOKUPとVLOOKUPは、どちらもデータの検索を行い、対応する値を返すという役割は同様ですが、特性や用途が異なります。
LOOKUP | VLOOKUP | |
用途 | 指定した値を範囲や配列内で検索し、対応する位置にある値を返す | 指定した範囲内で値を垂直方向に検索し、同じ行にある指定した列から値を返す |
動作 | 垂直(列)・水平(行)どちらの検索も可能 | 垂直方向(列)に対して検索可能 |
基本構文 | =LOOKUP(検索値, 検索範囲 , [対応範囲]) | =VLOOKUP(検索値, 範囲, 列番号, [検索の型]) |
制限 | 列の順序が昇順にソートされていなければならない | 検索列よりも右側の列からしか値を返すことができない |
Xlookup関数は何ができますか?
XLOOKUP関数は、LOOKUP関数やVLOOKUP関数、HLOOKUP関数のような制限がなく、より柔軟かつ高度な検索を行うことができます。
XLOOKUP関数の特徴について具体的にみていきましょう。
概要 | 詳細 |
主な機能 | 垂直・水平方向両方の検索が可能 |
検索の型 | デフォルトは完全一致ですが、近似一致やワイルドカード一致検索に変更が可能 |
結果の範囲指定 | 結果を返す範囲を指定できるため、検索範囲内の列の順序が変わっても結果に影響されない |
検索方向の指定 | デフォルトは上から下への検索ですが、下から上への検索へ変更が可能 |
エラー処理 | 検索値が見つからない場合に、エラー値ではなく返す値を任意に設定することが可能 |
まとめ
LOOKUP関数は、Excelを用いたデータ検索の効率化が可能なツールです。
本記事では、LOOKUP関数の基本的な情報や使い方、他の検索関数との違いについて幅広く紹介しました。特に、業務効率化や複雑な検索ニーズに対応するためのテクニックについては、実際のビジネスシーンで役に立つ内容でしょう。
本記事を参考に、ぜひLOOKUP関数を使いこなしてください。
Excel Lookup関数に関する重要用語
用語 | 説明 |
LOOKUP | =LOOKUP(検索値, 検索範囲 , [対応範囲])指定した値を指定した範囲から検索し、その位置に対応する値を返す |
VLOOKUP | =VLOOKUP(検索値, 範囲, 列番号, [検索の型])指定した列番号の範囲から、指定した値に対応する値を返す |
HLOOKUP | =HLOOKUP(検索値, 範囲, 行番号, [検索の型])指定した行番号の範囲から、指定した値に対応する値を返す |
INDEX | =INDEX(配列, 行番号, [列番号])指定した範囲内の指定した位置にある値を返す |
MATCH | =MATCH(検査値, 検査範囲, [照合の型])指定された範囲内で指定した値の位置を返す |