ExcelのINDEX関数とMATCH関数の組み合わせでデータ抽出をする方法

Excel(エクセル)のINDEX関数とMATCH関数は、2つを組み合わせることでVLOOKUP関数よりも柔軟にデータ抽出することができます。
この記事では、INDEX関数とMATCH関数それぞれの記述方法や使用方法、2つの関数を組み合わせてデータ抽出をする方法などをご紹介します。

INDEX関数とMATCH関数を組み合わせて使う方法

INDEX関数とMATCH関数を組み合わせて使う方法

Excel(エクセル)でデータ抽出する関数として「INDEX関数」と「MATCH関数」を組み合わせて使う方法があります。
データ抽出で有名な関数としては「VLOOKUP関数」がありますが記述方法などは大きく違います。

INDEX関数とMATCH関数の2つの関数を組み合わせれば、VLOOKUP関数とは別の方法で柔軟にデータ抽出することが可能となります。
その方法を知るにはINDEX関数とMATCH関数のそれぞれ個別の使用法を理解し、その後組み合わせ方法を理解するとわかりやすいです。
次の章からINDEX関数とMATCH関数それぞれの使用方法、2つの関数の組み合わせ方法、VLOOKUP関数との違いまでを順番に紹介していきます。

INDEX関数の使い方

Excel(エクセル)のINDEX関数の機能、記述方法、使い方について紹介をしていきます。

INDEX関数の機能

INDEX関数は「検索範囲」から「指定した行と列が交わる部分にあるデータ」を抽出する関数です。

INDEX関数の記述方法

INDEX関数は以下の形で記述します。
=INDEX(配列,行番号,列番号)


INDEX関数の使用方法

INDEX関数を使って表からデータを抽出する具体的な手順をご紹介します。
例として、PCパーツや周辺機器のリストの中から「D10」のセルに「CPUの価格」を抽出してみます。

INDEX関数を使って表からデータを抽出する具体的な手順をご紹介します。

  1. 抽出したいデータを表示するセル「D10」に「=INDEX(」と入力します。
  2. 抽出したいデータを表示するセル「D10」に「=INDEX(」と入力します。

  3. 「検索範囲」として「商品名」と「価格」が入力されているデータ範囲の「C4~D7」を範囲選択し「,」を入力します。
    ※「商品名」と「価格」の項目名のセル「C3」「D3」は範囲選択しません。
    「検索範囲」として「商品名」と「価格」が入力されているデータ範囲の「C4~D7」を範囲選択し「,」を入力します。

  4. INDEX関数の行番号と列番号に関して理解するため「行」と「列」の番号を確認しておきましょう。
    「C4~D7」の範囲において、CPUの価格は「4行目」の「2列目」にデータがあります。
    「行が4」、「列が2」の2つの数値がINDEX関数では必要となります。
    INDEX関数の行番号と列番号に関して理解するため「行」と「列」の番号を確認しておきましょう。

  5. 検索範囲の中から、検索する「行」を指定します。
    「CPU」は検索範囲の「4行目」にあるため「4」と入力し「,」を入力します。
    検索範囲の中から、検索する「行」を指定します。

  6. 検索範囲の中から、検索する「列」を指定します。
    「CPU」は検索範囲の「2列目」にあるため「2」と入力し、続けて閉じかっこ「)」を入力します。
    検索範囲の中から、検索する「列」を指定します。

  7. INDEX関数を入力したセルに「CPU」の価格のデータが抽出されます。
    検索範囲の中から、検索する「列」を指定します。

以上がINDEX関数の使用方法となります。

今回の例の使用方法だけですと、CPUの価格は目でみて確認し、コピーペーストで入力した方が早いです。
INDEX関数単体では、便利な関数とは言えないと感じると思います。
次に紹介するMATCH関数と組み合わせることで便利に使用することができます。

MATCH関数の使い方

Excel(エクセル)のMATCH関数の機能、記述方法、使い方について紹介をしていきます。

MATCH関数の機能

「検査値(指定した値)」と「検査範囲でデータと合致するもの」は「行か列の何番目にあるか」を求める関数です。

MATCH関数の記述方法

MATCH関数は以下の形で記述します。
=MATCH(検査値,検査範囲,照合の種類)


MATCH関数の使用方法

MATCH関数を使って指定したデータの位置を求める具体的な手順を紹介します。
例として先ほどのリストから「CPU」文字が存在する「行番号」を求めます。

MATCH関数を使って指定したデータの位置を求める具体的な手順を紹介します。


  1. 結果を表示したいセル「D10」に「=MATCH(」と入力します。
  2. 続いて「検査値」を指定します。
    「CPU」が検査値なので「C10」セルをクリックし「,」を入力します。
    「CPU」が検査値なので「C10」セルをクリックし「,」を入力します。

  3. 次に「検査範囲」を指定します。
    商品名「C4~C7」を範囲選択し「,」を入力します。
    ※「商品名」と「価格」の項目名のセル「C3」「D3」は範囲選択しません。
    商品名「C4~C7」を範囲選択し「,」を入力します。

  4. MATCH関数では、今回使った「0」を含めて検索の方法が3つあります。
    • 「1」:「検査値の値以下」のデータの中で、検査値にもっとも近いデータを検索。
    • 「0」:「検査値と一致する」値を検索。
    • 「-1」:「検査値の値以上」のデータの中で、検査値にもっとも近いデータを検索。
  5. 今回は「検査値と一致する」値なので「0」を入力し、閉じかっこ「)」を入力します。
    今回は「検査値と一致する」値なので「0」を入力し、閉じかっこ「)」を入力します。

  6. CPUの値が存在する行数である「4」が表示されます。
    CPUの値が存在する行数である「4」が表示されます。

以上がMATCH関数の使い方となります。
こちらもCPUの存在する行数は目で見て数えて入力した方が早いかもしれません。

MATCH関数で「行の番号が自動で抽出された」ところがポイントとなります。
INDEX関数で「行の番号」を指定箇所があったと思いますが、行番号の指定が「MATCH関数と連携すると自動で行える」ようになります。
次の章からINDEX関数とMATCH関数の組み合わせ方について紹介をしていきます。

INDEX関数とMATCH関数を組み合わせてデータ抽出する方法

Excel(エクセル)のINDEX関数とMATCH関数を組み合わせて、検索範囲の中から指定したデータを探し、抽出する方法を紹介します。

Excel(エクセル)のINDEX関数とMATCH関数を組み合わせて、検索範囲の中から指定したデータを探し、抽出する方法を紹介します。


完成した数式を最初に記載しておきます。
「D10」セルに以下の数式が入力されている状態が完成となります。
=INDEX(C4:D7,MATCH(C10,C4:C7,0),2)

完成した数式を最初にお見せしておくと、「D10」セルに以下の数式が入力されている状態となります。


実際にINDEX関数のMATCH関数の組み合わせでのデータ抽出を順番に作成していきます。

  1. 抽出した結果のデータを表示したいセル「D10」に「=INDEX(」と入力します。
  2. INDEX関数の「配列」の範囲を指定します。
    「C4~D7」の範囲にデータが入力されているので範囲選択し、カンマ「,」で区切ります。
    ※「商品名」と「価格」の項目名のセル「C3」「D3」は範囲選択しません。
    「C4~D7」の範囲にデータが入力されているので範囲選択し、カンマ「,」で区切ります。

  3. 検索範囲の中から、検索する「行」番号を指定します。
    ここでMATCH関数による行番号の自動取得を使って連携をしていきます。
    MATCH関数を使って「行」番号を指定するので「MATCH(」と入力します。
    検索範囲の中から、検索する「行」番号を指定します。

  4. MATCH関数で「CPU」の「行番号」を調べる流れとなります。
    今回は商品名の「CPU」が入力されている「C10」セルを指定し、カンマ「,」で区切ります。
    MATCH関数で「CPU」の「行番号」を調べる流れとなります。

  5. MATCH関数の検索範囲を指定します。
    「C4~C7」を範囲選択し、カンマ「,」で区切ります。
    MATCH関数の検索範囲を指定します。

  6. MATCH関数の「検索の方法」を指定します。
    指定と完全一致するデータを求める「0」を入力し、続けて閉じカッコ「)」と、再びINDEX関数の引数を入力するため「,」を入力します。
    MATCH関数の「検索の方法」を指定します。

  7. INDEX関数に戻ったので検索する「列数」を指定します。
    今回は価格を抽出するため、価格が入力されている列数である「2」を入力し、閉じカッコ「)」を入力します。
    INDEX関数に戻ったので検索する「列数」を指定します。

  8. INDEX関数とMATCH関数の組み合わせを入力したセルに、商品名に対応した価格が表示されます。
    INDEX関数とMATCH関数の組み合わせを入力したセルに、商品名に対応した価格が表示されます。

  9. C10セルに「HDD」と入力しなおして、価格が正しく変化するかを確認してみましょう。
    C10セルに「HDD」と入力しなおして、価格が正しく変化するかを確認してみましょう。


以上でINDEX関数とMATCH関数の組み合わせによるデータ抽出ができました。
オートフィルコピー(セルの右下をドラッグしてコピー)で複数のデータ抽出などをする場合は参照範囲の絶対指定が必用となるので、数式を編集する必要があります。
次の章で紹介をしていきます。

INDEX関数とMATCH関数をコピーして複数のセルのデータを表示する方法

入力したINDEX関数とMATCH関数の組み合わせをオートフィルコピーしていきます。
その際に、参照範囲が「ずれる」ことが無く、複数の行でそれぞれの価格を抽出するように関数を修正していきます。

完成例は以下のようになります。

入力したINDEX関数とMATCH関数の組み合わせをオートフィルコピーしたいと思います。


完成したセル「D10」の数式は以下のようになります。 =INDEX($C$4:$D$7,MATCH(C10,$C$4:$C$7,0),2)


「$」マークの「絶対参照」がポイントとなります。

完成したセル「D10」の数式は以下のようになります。


実際に修正をしていきます。
前の章で完成した数式は以下の数式です。
=INDEX(C4:D7,MATCH(C10,C4:C7,0),2)
この数式を、単純にオートフィルコピーするだけでは「参照のずれ」が生じるので、数式を修正します。

前の章で完成した数式は以下です。


INDEXとMATCHで使用している「範囲選択」している「C4~D7」と「C4~C7」の2か所を順番に範囲選択します。
それぞれ範囲選択した際にキーボードの「F4」キーを押し「絶対参照」に変更していきます。

INDEXとMATCHで使用している「範囲選択」している「C4~D7」と「C4~C7」の2か所を順番に範囲選択します。

それぞれ範囲選択した際にキーボードの「F4」キーを押し「絶対参照」に変更していきます。


これでコピーしても元のデータ範囲の参照範囲が「ずれなく」なりました。
オートフィルコピー(セルの右下をドラッグしてコピー)をすれば、各商品の価格が自動で入力されていきます。

これでコピーしても元のデータ範囲の参照範囲が「ずれなく」なりました。


INDEX関数とMATCH関数の組み合わせとVLOOKUP関数の違い

今まで紹介した内容ですとINDEX関数とMATCH関数の組み合わせはVLOOKUP関数とほぼ同じ用途となります。
2つの関数はどのように使い分けるのでしょうか。

INDEX関数とMATCH関数の組み合わせの方がVLOOKUP関数よりも柔軟にデータの検索が可能な面があります。
VLOOKUP関数は「範囲選択の一番左端の列」を元にして検索する方法しかありません。
つまり、VLOOKUP関数は「検索対象の列より右にあるデータ」しか抽出対象にはできないということになります。

INDEX関数とMATCH関数の組み合わせの場合は、好きな列を「抽出対象」に変更することができます。
VLOOKUP関数では出来ない「検索対象の列の左」にあるデータも抽出対象に出来るということになります。

商品コードの列を、検索対象である「商品名」の左の「B列」に追加して、セル「D10」に商品コードを抽出し、オートフィルコピーをしました。

商品コードの列を、検索対象である「商品名」の左の「B列」に追加して、セル「D10」に商品コードを抽出し、オートフィルコピーをしました。


「B列」の部分は新たに商品コードのデータを入力しています。
そして「D10」セルの数式を一部修正しています。
「D10」セルに入る修正後の数式を記載しておきます。
=INDEX($B$4:$D$7,MATCH(C10,$C$4:$C$7,0),1)


修正内容は以下の部分となります。

  • 「INDEX関数の「配列」の範囲」である「=INDEX($C$4:$D$7」を「=INDEX($B$4:$D$7」へ修正。
  • 「INDEX関数の「列」の数」である関数の最後の部分「,2)」を「,1)」に修正しています。

いままでの紹介した内容をもとに、修正内容を確認してみましょう。

「INDEX関数の「配列」の範囲」である「=INDEX($C$4:$D$7」を「=INDEX($B$4:$D$7」へ修正。

まとめ

INDEX関数、MATCH関数、INDEX関数とMATCH関数の連携方法について紹介をしてきました。
INDEX関数、MATCH関数は単体ごとですと、使い勝手がそこまで良い関数ではないかもしれません。
INDEX関数、MATCH関数2つの関数を連携して使用することで、該当するデータの抽出を柔軟に行うことが可能となります。

そのほかの関数との連携も可能ですが、第一歩としてINDEXとMATCH関数の連携方法を理解しておいて、さまざまな応用を考えてみると良いでしょう。

Microsoft Officeを購入をしたいと思った際、ドスパラでは「Office 2021 搭載パソコン」を販売しています。
「Office 2021 搭載パソコン」なら、面倒なインストール作業は不要です。
お届け後すぐに、Microsoft Office 2021をご利用いただけます。
パソコン新規購入の際はぜひ「Office 2021 搭載パソコン」をご検討ください。


投稿日:

ゲームノート
おすすめランキング

ゲームデスク
おすすめランキング

ノートパソコン
おすすめランキング

タワーパソコン人気ランキング

ミニタワーパソコン人気ランキング

スリムパソコン人気ランキング

もっと見る