ExcelでLookupを行う方法:関数と計算式の例

  • これを共有
Michael Brown

このチュートリアルでは、Excelのルックアップの基本を説明し、Excelのルックアップ関数のそれぞれの長所と短所を示し、特定の状況でどのルックアップ式を使用するのが最適かを判断できるように、多くの例を示しています。

データセット内の特定の値を検索することは、Excelで最もよく行う作業の1つです。 しかし、すべての状況に適した「普遍的な」検索式は存在しません。 その理由は、「検索」という言葉が、列を縦に、行を横に、行と列の交点を探す、1つまたは複数の条件で検索する、検索結果を返すなど、さまざまな意味を持つことがあるためです。最初に見つかったマッチまたは複数のマッチ、大文字小文字を区別した検索または区別しない検索、など。

このページでは、最も重要なExcelのルックアップ関数のリストと、参考のためにリンクされた式の例と詳細なチュートリアルを見つけることができます。

    Excelのルックアップ - 基本編

    Excelのルックアップ(検索)式の複雑な仕組みに触れる前に、重要な用語を定義しておきましょう。

    ルックアップ - 表データから指定された値を検索すること。

    ルックアップ値 - を検索するための値。

    戻り値 (マッチング値またはマッチ) - ルックアップ値と同じ位置で、別の列または行にある値 (垂直または水平ルックアップを行うかどうかによって異なる) です。

    ルックアップテーブル コンピュータサイエンスでは、ルックアップテーブルはデータの配列であり、一般に入力値と出力値を対応付けるために使用されます。 このチュートリアルでは、Excelルックアップテーブルは、ルックアップ値を検索するセル範囲以外の何ものでもありません。

    メインテーブル (マスター・テーブル) - 一致する値を取り込むためのテーブル。

    ルックアップテーブルとメインテーブルの構造やサイズは異なってもかまいませんが、常に少なくとも1つの 共通一意識別子 つまり、同一のデータを保持する列または行を、垂直または水平方向に検索するかどうかで決まります。

    次のスクリーンショットは、以下の多くの例で使用されるルックアップテーブルのサンプルです。

    エクセル ルックアップ関数

    以下は、Excelでルックアップを実行するための最も一般的な数式、その主な利点と欠点の簡単な概要です。

    LOOKUP機能

    ExcelのLOOKUP関数は、最も単純なタイプの垂直方向と水平方向のルックアップを実行できます。

    長所 : 使いやすい。

    短所 ソートされていないデータは扱えません(ルックアップカラム/行の昇順ソートが必要です)。

    詳しくは、Excel LOOKUP関数の使い方をご覧ください。

    VLOOKUP機能

    これは、LOOKUP関数の改良版で、特に次のことを行うために設計されています。 たてよこルックアップ を列挙しています。

    長所 比較的簡単な操作で、完全一致と近似一致を使い分けることができます。

    短所 ルックアップテーブルにカラムが挿入または削除された場合、動作しなくなる。

    詳しくは、Excel VLOOKUPチュートリアル(初心者向け)をご覧ください。

    HLOOKUP関数

    VLOOKUPの水平方向の対極にあるもので、ルックアップテーブルの最初の行から値を検索し、別の行から同じ位置の値を返すというものです。

    長所 : 簡単な操作で、完全一致と近似一致を返すことができます。

    短所 ルックアップテーブルの最上位行のみ検索可能、行の挿入や削除の影響を受ける、ルックアップ値は255文字以下である必要があります。

    詳しくは、「ExcelでHLOOKUPを使う方法」をご覧ください。

    VLOOKUP MATCH / HLOOKUP MATCH

    MATCHによって作成された動的な列や行の参照により、Excelのルックアップ式はデータセットの変更に影響されません。 つまり、VLOOKUPやHLOOKUP関数は、MATCHの助けを借りて、ルックアップテーブルに何列や何行が挿入、削除されても、正しい値を返すことができるのです。

    垂直方向のルックアップのための公式

    VLOOKUP( ルックアップバリュー , ルックアップテーブル , MATCH( return_column_name。 , column_headers 0), FALSE)

    ホリゾンタルルックアップの計算式

    HLOOKUP( ルックアップバリュー , ルックアップテーブル , MATCH( return_row_name。 , 行ヘッダ 0), FALSE)

    長所 データの挿入や削除に影響されない、通常のHlookupやVlookupの改良版です。

    短所 MATCH関数に渡すルックアップ値は、戻り値のカラム名と正確に一致する必要があります)、255文字を超えるルックアップ値には対応できません。

    詳細および計算式の例については、こちらをご覧ください。

    • ExcelのVlookupとMatch
    • ExcelのHlookupとMatch

    オフセットマッチ

    VlookupとHlookupの多くの制限から解放され、より複雑でより強力なルックアップ式です。

    V-Lookupの計算式

    オフセット( ルックアップテーブル , MATCH( ルックアップバリュー , OFFSET( ルックアップテーブル , 0, n , ROWS( ルックアップテーブル ), 1) ,0) -1, m , 1, 1)

    どこで

    • n - は、ルックアップ列のオフセット、すなわち、開始点からルックアップ列まで移動する列数である。
    • m - は戻り列のオフセット、すなわち開始点から戻り列まで移動する列数である。

    H-Lookupの計算式

    オフセット( ルックアップテーブル , m , MATCH( ルックアップバリュー , OFFSET( ルックアップテーブル , n , 0, 1, 列( ルックアップテーブル )), 0) -1, 1, 1)

    どこで

    • n - は、ルックアップ行のオフセット、つまり、開始点からルックアップ行まで移動する行数です。
    • m - は戻り行オフセット、つまり、開始点から戻り行まで移動する行数です。

    行列の参照(行と列による)のための式

    {=OFFSET ( 開始点 , MATCH ( 垂直方向のルックアップ値 , ルックアップカラム 0)、MATCH( 水平方向のルックアップ値 , ルックアップ行 , 0))}

    CtrlキーとShiftキーとEnterキーを同時に押すことで入力される配列式であることに注意してください。

    長所 データセットの変更に影響されずに、左辺のVlookup、上辺のHlookup、(列と行の値による)双方向ルックアップを実行できるようにします。

    短所 複雑で覚えにくい構文

    詳細と計算式の例については、ExcelでOFFSET関数を使用するを参照してください。

    INDEX MATCH

    インデックスマッチは個人的に気に入っていて、Excelのルックアップのほとんどに使っています。

    V-Lookupの計算式

    INDEX ( return_column , MATCH ( ルックアップバリュー , ルックアップカラム , 0))

    H-Lookupの計算式

    INDEX ( return_row , MATCH ( ルックアップバリュー , ルックアップ行 , 0))

    行列のルックアップのための式

    古典的な Index Match 式を拡張し、特定の列と行の交点にある値を返すようにしたもの。

    INDEX ( ルックアップテーブル , MATCH ( 垂直方向のルックアップ値 , ルックアップカラム 0)、MATCH( 水平方向のルックアップ値 , ルックアップ行 , 0))

    短所 : ただひとつ、数式の構文を覚えておく必要があります。

    長所 Vlookup、Hlookup、Lookup関数よりも多くの点で優れています。

    • 左ルックアップ、上ルックアップが可能です。
    • 列や行を挿入したり削除したりすることで、ルックアップテーブルを安全に拡張したり折りたたんだりすることができるようになります。
    • ルックアップ値のサイズに制限を設けない。
    • 高速化:Index Matchの数式は、テーブル全体ではなく、列や行を参照するため、処理能力が低く、Excelの動作が遅くなることはありません。

    詳しくは、こちらをご覧ください。

    • VLOOKUPの代替となるINDEX MATCH
    • INDEX MATCH 2次元ルックアップのためのMATCH式

    エクセル ルックアップ比較表

    このように、Excelの検索式はすべて同等ではなく、さまざまな検索に対応できるものもあれば、特定の状況でのみ使用できるものもあります。 以下の表は、Excelの各検索式の機能の概要を示しています。

    縦型ルックアップ 左ルックアップ 横型ルックアップ アッパールックアップ マトリックスルックアップ データの挿入・削除が可能
    ルックアップ
    Vlookup
    ルックアップ
    Vlookup Match
    ルックアップマッチ
    オフセットマッチ
    オフセットマッチ マッチ
    インデックスマッチ
    インデックスマッチ マッチ

    エクセルのルックアップフォーミュラの例

    どの数式を使用するかを決定する最初のステップは、実行したいルックアップの種類を決定することです。 以下に、最も一般的なルックアップの種類に対応する数式の例を示します。

      列の垂直ルックアップ

      垂直ルックアップまたはVlookupは、ある列でルックアップ値を求め、別の列から同じ行の値を返す処理です。 ExcelでのVlookupは、次のようなさまざまな方法で行うことができます。

      VLOOKUP機能

      ルックアップ値がテーブルの左側の列にあり、データセットの構造を変更する予定がない場合(列を追加したり削除したりしない)、通常のVlookup式を安全に使用することができます。

      =vlookup(g2, $a$2:$e$6, 5, false)

      ここで、G2 はルックアップ値、ルックアップテーブルの A2:E6、E は戻り値の列である。

      VLOOKUP MATCH

      列がいつでも挿入されたり削除されたりする「可変」Excel ルックアップテーブルを使用している場合は、「ハードコードされた」インデックス番号の代わりに動的な列参照を作成する Match 関数を埋め込んで、Vlookup 式をこれらの変更に対応できるようにします。

      =vlookup(f2,$a$1:$d$6, match($g$1,$a$1:$d$1, 0), false)

      INDEX MATCH - 左ルックアップ

      右から左へのルックアップを簡単に処理し、列をいくつ追加、削除しても非の打ち所がない、私のお気に入りの数式です。

      例えば、B列からH2の値を検索し、F列から一致する値を返すには、次の式を使用します。

      =index($f$2:$f$6,(match(h2,$b$2:$b$6,0)))

      注:Vlookup式を複数のセルで使用する場合は、必ず以下の手順で行ってください。 ルックアップテーブルリファレンスをロックする のように$記号(絶対セル参照)を使用することで、数式が他のセルに正しくコピーされるようになります。

      行単位の水平ルックアップ

      水平ルックアップは、垂直ルックアップの「転置」バージョンで、水平に配置されたデータセットを検索する。 つまり、ある行でルックアップ値を検索し、別の行から同じ位置の値を返す。

      ルックアップ値がB9、ルックアップテーブルがB1:F5で、5行目から一致する値を返したい場合は、次のいずれかの数式を使用します。

      HLOOKUP関数

      を越えてのみルックアップ可能。 最上段 をデータセットに追加してください。

      =hlookup(b8, $b$1:$f$5, 5, false)

      HLOOKUP MATCH

      純粋なHlookupと同様に、この数式は最上部の行だけを検索することができますが、次のことが可能です。 安全に行を挿入または削除する をルックアップテーブルに格納します。

      =hlookup(b8, $b$1:$f$5, match($a$9, $a$1:$a$5, 0), false)

      ここで、A1:A5は行のヘッダー、A9はマッチを返したい行の名前です。

      INDEX MATCH

      可能 見上げる であり、上記の式のような制約がない。

      =index($b$5:$f$5,(match(b8,$b$1:$f$1,0)))である。

      2次元ルックアップ(行と列の値に基づく)

      二次元ルックアップ(通称 行列ルックアップ , ダブルルックアップ または 2ウェイ・ルックアップ つまり、2次元の検索式は、指定した行と列の交点にある値を検索する。

      ルックアップテーブルがA1:E6で、セルH2には行にマッチする値、H3には列にマッチする値が格納されていると仮定すると、次の数式がうまく機能することになります。

      INDEX MATCH MATCH式 :

      =index($a$1:$e$6, match(h2,$a$1:$a$6,0), match(h3,$a$1:$e$1,0))

      OFFSET MATCH MATCH 式 :

      =offset($a$1,match(h2,$a$2:$a$6,0),match(h3,$b$1:$e$1,0))。

      上記の式以外にも、Excelで行列検索を行う方法はいくつかあります。詳細は、Excelで2元配列を行う方法を参照してください。

      三次元ルックアップ

      三次元検索とは、3種類の検索値で検索することです。 以下のデータセットで、特定の年を検索し(H2)、その年のデータの中から特定の名前を検索し(H3)、さらに特定の月の値を返したい(H4)と仮定した場合。

      この作業は、以下の配列式で実現できます(Ctrl + Shift + Enterを忘れずに押すと、正しく完了します)。

      =INDEX($A$1:$E$12,MIN(IF((ROW($A$1:$A$12)>MATCH(H2,$A$1:$A$12,0))*($A$1:$A$12=H3),ROW($A$1:$A$12),"")),MATCH(H4,$A$1:$E$1,0)))

      複数条件でのルックアップ

      複数の条件を評価できるようにするには、古典的なIndex Match式を配列式に変更する必要があります。

      INDEX( ルックアップテーブル , MATCH(1, ( lookup_value1 = ルックアップ_カラム1 ) * ( ルックアップバリュー2 = ルックアップ_カラム2 )*..., 0), return_column_numberを指定します。 )

      A1:C11にルックアップテーブルがあるので、A列のセルF1の値を検索し、B列のセルF2の値を検索するという2つの条件で一致するものを探してみましょう。

      =index($a$1:$c$11, match(1, (f1=$a$1:$a$11) * (f2=$b$1:$b$11),0), 3)

      通常通り、Ctrl + Shift + Enterキーを押すと、数式が配列式として評価されます。

      式のロジックの詳細については、複数の条件で検索するINDEX MATCHをご覧ください。

      複数の値を返すルックアップ

      Excelの検索機能(LOOKUP、VLOOKUP、HLOOKUP)は、どれを使っても1つのマッチしか返さないので、見つかったマッチをすべて取得するには、6種類の関数を配列式に組み合わせて使用しなければなりません。

      IFERROR(INDEX()の場合 return_range , SMALL(IF( ルックアップバリュー = ルックアップレンジ , ROW( return_range )- m ,""), ROW() ・・・。 n )),"")

      どこで

      • m は、返送範囲の最初のセルの行番号から1を引いた値である。
      • n は、最初の数式セルの行番号から1を引いた値です。

      ルックアップ値をセルE2に、ルックアップ範囲をA2:A11に、リターン範囲をB2:B11に、最初の数式セルを2行目に配置すると、ルックアップ数式は次のような形になります。

      =ferror(index($b$2:$b$11, small(if($e$2 =$a$2:$a$11, row($b$2:$b$11 )- 1,""), row() - 1 )),"")

      複数の一致する数式を返すには、最初のセル(F2)に数式を入力し、Ctrl + Shift + Enterキーを押した後、列の下の他のセルに数式をコピーします。

      上記の式の詳しい説明や、複数の値を返す他の方法については、「複数の結果を返すVlookupの方法」をご覧ください。

      ネストされたルックアップ(2つのルックアップテーブルから)。

      メインテーブルとデータを取り出したいルックアップテーブルに共通のカラムがない場合、次のように追加のルックアップテーブルを使用して一致を確立することができます。

      から値を取得する。 金額 欄外 ルックアップ_テーブル2 の場合、以下の計算式を使用します。

      =VLOOKUP(VLOOKUP(A2, Lookup_table1!$A$1:$B$6, 2, FALSE), Lookup_table2!$A$1:$B$6, 2, FALSE)

      以下のスクリーンショットに示すように、ネストされたルックアップ式は完全に動作します。

      複数シートからの連続Vlookup

      前の検索が成功したか失敗したかに基づいて連続的に Vlookup を実行するには、ネストされた IFERROR 関数と VLOOKUP を併用して、複数の条件を 1 つずつ評価します。

      iferror(vlookup()の場合 ... ), iferror(vlookup() ... ), iferror(vlookup()) ... ), "Not found"))

      最初の Vlookup が失敗すると、IFERROR はエラーを捕捉して別の Vlookup を実行します。 2 番目の Vlookup も何も見つからなかった場合、2 番目の IFERROR はエラーを捕捉して 3 番目の Vlookup を実行します。 すべての Vlookup が失敗すると、最後の IFERROR は "not found" または数式に指定したその他のメッセージが返されます。

      例として、3枚のシートから金額を引き出してみます。

      =IFERROR(VLOOKUP(B1,A6:B9,2,0), IFERROR(VLOOKUP(B1,D6:E9,2,0), IFERROR(VLOOKUP(B1,G6:H9,2,0), "Not found")))

      結果はこのような感じになります。

      詳しくは、「ExcelでIFERROR関数をネストして使う方法」をご覧ください。

      大文字小文字を区別して検索する

      ご存知のように、Excelの検索関数は大文字と小文字を区別しません。 小文字と大文字を区別して検索するには、LOOKUPまたはINDEX MATCHとEXACT関数を組み合わせてください。 INDEX MATCHは、LOOKUP関数ほど検索列の値を並べ替える必要がなく、左から右へ、右から左へと検索できるため、私個人としては、この方法を選択しています。と右から左へのルックアップが可能で、すべてのデータ型に対して完璧に機能します。

      INDEX( return_column , match(true, exact( ルックアップカラム , ルックアップバリュー ),0))

      G2を検索値、Aを検索対象の列、Eを検索対象の列とすると、大文字小文字を区別する検索式は次のようになる。

      =index($e$2:$e$6, match(true, exact($a$2:$a$6,g2),0))

      であるため 配列式 Ctrl + Shift + Enterキーで正しく完了します。

      その他の計算式の例については、「Excelで大文字小文字を区別して検索する方法」をご覧ください。

      文字列の部分一致を検索する

      部分一致で検索することは、Excelで最も難しい作業の1つであり、普遍的な解決策はありません。 どの数式を使うかは、検索する列の値と検索する値の間にどのような違いがあるかによります。 ほとんどの場合、LEFT、RIGHT、MID関数を使って値の共通部分を抽出し、その部分を ルックアップバリュー のように、Vlookup関数の引数で指定します。

      =vlookup(right(d2,4), $a$2:$b$6, 2, false)

      ここで、D2はルックアップ値、A2:B6はルックアップテーブル、2はマッチを返すカラムのインデックス番号である。

      Excelで部分一致検索を行う他の方法については、「部分一致で2つのワークシートを結合する方法」を参照してください。

      このチュートリアルで説明した数式をより詳しく見るには、Excelのルックアップ関数の例をダウンロードしてください。

      Excelでルックアップを行うための数式不要の方法

      もちろん、Excelのルックアップは簡単な作業ではありません。 これからExcelを学ぼうとする人にとって、ルックアップの公式は非常にわかりにくく、難しく感じられるかもしれません。 しかし、どうかがっかりしないでください。このスキルは、大多数のユーザーにとって自然なものではないのです

      初心者の方でも簡単に使えるように、テーブルの結合ウィザードという特別なツールを作りました。 このツールは、一つの数式も使わずにテーブルの検索、マッチング、結合ができます。 さらに、Excelの上級ユーザーでも使えるユニークなオプションを多数用意しています。

      • で検索する たげんてき つまり、1つまたは複数の列を一意の識別子として使用します。
      • 更新情報 既存のカラムの値や 新規追加 コラムス をルックアップテーブルから読み取ります。
      • 戻る 複数試合 行の結合ウィザードと組み合わせて使用すると、複数の結果をカンマ区切りで1つのセルにまとめることもできます(例はこちらでご覧いただけます)。
      • などなど。

      テーブルのマージウィザードの操作は簡単で、直感的に理解することができます。

      1. 一致する値を取り出したいメイン・テーブルを選択します。
      2. マッチを取り出すルックアップテーブルを選択します。
      3. 1つまたは複数の共通列を定義する。
      4. 表の末尾に更新または追加する列を選択します。
      5. オプションとして、1つ以上の追加マージオプションを選択します。
      6. クリック 仕上がり をクリックすると、すぐに結果が表示されますよ。

      アドインをご自分のワークシートで試してみたい方は、Excel用の時間節約ツール(合計70以上のツールと300以上の機能!)を含む究極スイートの試用版をぜひダウンロードしてください。

      ダウンロード可能なもの

      Excel ルックアップ計算式の例 (.xlsx ファイル)

      Ultimate Suite 14日間フル機能版(.exeファイル)

      Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。