ひろふみのエクセル知恵袋
脱初心者で
豊かな『生活』の時間と 『仕事』のゆとり
★Excelが苦手な方は、以下の順番で学習していただけましたらと思います。
【0からの学習編 ~セル理解編~ 計算式理解編~ 現場の実務編~】
現場の実務編

【現場の実務編04】【Excel】VLOOKUPで検索できない時は、INDEX&MATCHの技で解決(使い方を解説します)

Sponsored Links
こんな悩みを抱えている方にお薦めの記事です。

・検索値より左側に検索範囲があってVLOOKUPで対応できず困っている

・検索値によって、取り出す行列が変わるどうしてよいか困っている。

【0】YOU Tube解説資料及び本サイトの例題サンプル

【1】「INDEX関数&MATCH関数」と「VLOOKUP
    関数」のできる事の違い。

「VLOOKUP」と「INDEX&MATCT」の違い

VLOOKUPは、検索値の左側にあるデータからは情報を取り出せない弱点がある。INDEXとMATCHを組み合わせると、左側にある情報からも取り出せる。

INDEXとMATCH関数の組み合わせは、縦横で交わるデータを取り出す!「クロス抽出」が可能。

MATCH関数やINDEX関数は、その関数のみだけでは、実務では使えない関数です、しかし両方の関数を組みあわせると、縦方向・横方向で、クロスした値を取り出すことができます。

INDEX関数&MATCH関数とVLOOKUP関数の違いについて、事例を通して説明していきます。関数の使い方については、【2】以降で説明しますので、ここでは、どのような場合に、VLOOKUPやINDEX&MATCHを使うのかのイメージを理解してください。

(1)「VLOOKUP関数」でも「INDEX&MATCH関数」でも 
   対応可能な事例の紹介

(参考例1)

C10に商品NOを入力すると、商品単価一覧を参照して、C13とC16に自動で「単価」が表示できるか検証した事例です。

(解説)
・C13に入力したVLOOKUPは、取り出す値が、検索値(商品NO)より右側に
データ(単価)がある為、問題なく利用可能。
・C16に入力したINDEX&MATCHもVLOOKUP関数ができることは、基本的に
できる。

【計算式の理解編09】データ入力作業を効率化する必須のVOOKUP関数の使い方“手入力に時間をかけている人は必見!!” この記事で習得できること 【1】 VLOOKUP関数とは何か。【2】 VLOOKUP関数の使い方。 【0】YOU Tube...

(2)「VLOOKUP関数」では対応できず、「INDEX&MATCH
    関数」では対応可能な事例(1つ目)

(参考例2)

C10に商品NOを入力すると、商品単価一覧を参照して、C13とC16に自動で単価が表示できるか検証

(解説)
・VLOOKUPは、取り出す値が、検索値(商品NO)より左側にデータ(単価)が
あるため、情報を取り出せない。
・INDEX&MATCHは、左側にあるデータであっても、取り出すことが可能

(3)VLOOKUPでは対応できず、INDEX&MATCHでは対応可能な事例(2つ目)

(参考例3)

D11の出発地と、D12の到着地に該当する料金を、「旅行ツアー料金表」をもとにC13に表示する計算式を入力する。

(解説)
・INDEX&MATCHは、出発地(縦方向)と到着地(横方向)から、料金表を
 クロスで交わった箇所を取り出すことが可能
・VLOOKUPでは、縦と横のクロスした値を取り出す機能は不可能

【2】INDEX関数とは何か

INDEX関数は、配列(セル範囲)の中から、指定した行と列が交差する位置にあるデータを取り出す関数です。配列の右から何列目、配列の上から何行目かを、「行番号」「列番号」にそれぞれ指定する必要があります。

  配列:検索したい範囲を指定
  行番号:指定した範囲の上から何番目かを指定する
  列番号:指定した範囲の左から何番目かを指定する
 ※具体的な使い方のメージは【3】の例題で紹介します。

【3】INDEX関数の使い方

例題1を関数のダイアログボックスを使ってINDEX関数の入力画面の理解を深めてみよう

①セルD13を選択した後、上部メニューにある「fx」をクリックすると、「関数の挿入」のダイアログボックスが起動する。

②「関数の挿入」のダイアログボックスが起動されるので、関数の検索のボックスに半角入力で「INDEX」と入力し「検索開始」をクリック

③関数名にINDEXが表示されることを確認しOKクリック

④「引数の選択」が表示されるので、引数Aに「配列,行番号,列番号」が選択されていることを確認し、OKする。

④INDEX関数のダイアログボックスが開かれます。

⑤配列の範囲は「C4:H9」、行番号は「5」、列番号は「6」と入力しOKをクリック

配列は、紫で囲んだ範囲を指定、その範囲内で、行列を指定していく。
行番号は、出発地「福岡」のある位置(範囲の一番上から数えて5番目を指定)
列番号は、到着地の「沖縄」のある位置(範囲の左から数えて6番目を指定)

①料金に正しく数値が反映したことを確認

※実際に現場で利用する際では、INDEX関数単体で使うことはなく、他の関数と組みあわせで利用することがほとんどだと思います。組みあわせを理解する前に、INDEXの関数の基本を知っておきましょう。

【4】MATCH関数とは何か

目的のセル「検査値」を「検査範囲」で探し、先頭のセルから数えて何番目にあるかを求める関数。MATCH関数のみで現場で利用することは、あまりありませんが、他の関数と組み合わて利用することがほとんどです。組み合わて使うたことを視野に入れ、理解しておきましょう!

MATCH関数に①②③を入力すると、G11に「5」と表示される。
具体的な活用するイメージは【5】で解説します。

【5】MATCH関数の使い方

例題2を関数のダイアログボックスを使ってMATCH関数の入力画面の理解を深めてみよう

(1)まずは、G11のの出発地「福岡」が、セルC4から下へ何番目か
計算してみましょう。

①セルG11を選択し、上部メニューバーのfxをクリック

(補足説明)
※[fx]ボタンを押すと、[関数の挿入]のダイアログボックスの画面が起動されます。使いこなせば数式の入力を効率化できる便利なボタンです。

②「関数の挿入」のダイアログボックスが起動されるので、関数の検索のボックスに半角入力で「MATCH」と入力し「検索開始」をクリック

③関数名にMATCHが表示されることを確認しOKクリック

④MATCH関数のダイアログボックスが開かれます。

⑤検査値にマウスで「D11」を選択、検査範囲を「C4からC9」に指定、照合の種類は「0」と入力、その後、OKをクリック

  • 検査値:探したい対象は福岡(出発地)であるため、「福岡」のセルを指定。
  • 入力方法:マウスでセルを選択、直打ちでD11と入力、福岡と直打ち入力、
    いずれかで入力可能
  • 検索範囲:探す対象のある範囲(出発地)を指定するので、出発/到着から沖縄
    までを選択「C4:C9」
  • 照合の種類:検査値の「福岡」と完全一致する箇所を探すので、「0」を指定

⑥G11に「5」と正しく反映していることを確認

(2)到着地 沖縄がセルC4から右に何番目にあるか求めます。

①計算式を入力するセル「G12」を選択し上部メニューバーの「fx」をクリック

②「関数の挿入」のダイアログボックスが起動されるので、関数の検索のボックスに半角入力で「MATCH」と入力し「検索開始」をクリック

③関数名にMATCHが表示されることを確認しOKクリック

④MATCH関数のダイアログボックスが開かれます。

⑤検査値にマウスで「D12」を選択、検査範囲を「C4からH4」に指定、照合の種類は「0」と入力、その後、OKをクリック

  • 検査値:探したい対象は沖縄(到着地)であるため、「沖縄」のセルを指定。
  • 入力方法:マウスでセルを選択、直打ちでD12と入力、直打ちで沖縄と入力、
    いずれかで入力
  • 検索範囲:探す対象のある範囲(到着地)を指定するので、出発/到着から沖縄まで
         を選択「C4:H4」
  • 照合の種類:検査値の「沖縄」と完全一致する箇所を探すので、「0」を指定

⑥G12に「6」と正しく反映していることを確認

【6】INDEX関数&MATCH関数の使い方

例題1、例題2のケースを見て、INDEX関数だけ、あるいはMATCHだけでは、実務的に、使える場面はほとんどありません。ただし、「位置の検索」「値の取り出し」の両方を組みあわせれば、VLOOKUPでは困難な値を取り出すことが可能です。

実務的には次の例題3のようなケースが多いと思います。

(1)縦と横でクロスする位置のデータを取得する方法

(問題を解くイメージ)

例題2で作成したG11の式を「行番号」へ代入、G12の式を「列番号」へ代入します。
配列はこれまでと同様、C4を起点にし、値を取り出す範囲を指定します。「C4:H9」

それでは、
関数のダイアログボックスを使って最初からINDEX関数とMATCH関数を入力する場合で、計算式を入力してみます。

①セルD13を選択し、上部メニューバーのfxをクリック

②「関数の挿入」のダイアログボックスが起動されるので、関数の検索のボックスに半角入力で「INDEX」と入力し「検索開始」をクリック

③関数名にINDEXが表示されることを確認しOKクリック

④配列,行番号,列番号を選択されていることを確認しOKをクリック

⑤INDEX関数のダイアログボックスが開かれます。

⑥配列に範囲C4:H9で指定します。行番号、列番号が、C4を起点にして対象セルが何番目か数えているため、C4を入れて範囲指定しています。

⑦カーソルで行番号を選択し、名前ボックスのプルダウンからMATCHを選択する。名前ボックスには、直近で利用した関数が表示されます。

もし、MATCH関数が表示されていない場合は、選択肢の一番下にある「その他の関数」から検索してMATCH関数を選択してください。

名前ボックスに「MATCH関数」が表示されない場合は以下参照

❶その他の関数をクリックすると、「関数の挿入」のダイアログボックスが起動されるので、関数の検索のボックスに半角入力で「INDEX」と入力し「検索開始」をクリック

⑧MATCH関数のダイアログボックスが起動したら、出発地「D11」の位置がC4から何番目かを探す計算式を入力します。例題2と同じ数式です。

入力終わってもまだOKは押さないように!まだ途中なので!

  • 検査値:探す対象セルはD11
  • 検査範囲:C4を起点にして、出発地を探す対象範囲を指定(C4:C9)
  • 照合の種類:完全一致のものを探すため「0」

⑨数式バーのINDEXの文字の上をクリックしてください。

⑩INDEX関数の入力画面に戻ります。

⑪「列番号」を選択し、名前ボックスからMATCHをクリックする。

⑫MATCH関数のダイアログボックスが起動します。到着地の沖縄がC4から何番目にあるか調べる計算式を入力します。入力後、OKをクリック。

  • 検査値:探す対象セルはD12
  • 検査範囲:C4を起点にして、到着地を探す対象範囲を指定(C4:H4)
  • 照合の種類:完全一致のものを探すため「0」

⑬D13に料金が正しく反映したことを確認する。

(2)VLOOKUP関数では対応できない検査値より左側からデータを取得する方法

結論の解答は以下の関数をF3に入力します。

(解説)要領は例題2と同じ考え方です。

①セルF3を選択し、上部メニューのfxからINDEX関数を起動してください。

②配列は商品名から商品コードを探すので、その両方を含む範囲を選択する。

(解説)あとは、商品コードは左から1列目と分かっているので、E商品が上から何番目か分かれば、そのクロスするデータをINDEX関数で抽出すればよいことになります。

③行番号を選択した状態で、名前ボックスからMATCH関数を選択する。

MATCH関数が名前ボックスのリストに表示されていない場合は、「その他の関数」を選択して検索してください。

④MATCH関数でE商品が上から何番目かを調べます。入力後OKをクリック
各項目は以下を入力します。

  • 「検査値」はF2
  • 「検査範囲」C2:C8 
  • 「照合の種類」0

⑤F3に正しく計算されていることを確認。

【7】まとめ

INDEX関数は手入力で行番号と列番号を指定してあげると、行と列のクロスする場所にあるデータを抽出することができます、そこに行番号と列番号をMATCH関数で自動計算させることにより、手入力なしで、柔軟にデータを抽出することができます。

VLOOKUPでは、検査値より、左側にあるデータを取り出すことはできませんが、INDEXとMATCH関数を組み合わせることでデータを取り出すことが可能です。目的を加味し、効率的な方法を使って対応しましょう。

Sponsored Links