Googleスプレッドシートで柔軟な検索を実現!INDEX関数とMATCH関数の組み合わせテクニックを徹底解説

はじめに

Googleスプレッドシートでデータを検索して取得する際、VLOOKUP関数では範囲の左端からしか検索ができず、限られた条件しか指定できません。そこで活躍するのがINDEX関数MATCH関数の組み合わせです。この2つの関数を使うことで、柔軟で効率的なデータ検索が可能になります。

この記事では、INDEX関数とMATCH関数の基本的な使い方から、複数条件での検索や列を越えた検索の実例まで、段階的に詳しく解説していきます。


目次

INDEX関数とMATCH関数の概要

まず、INDEX関数とMATCH関数がそれぞれどのような役割を果たすのかを理解しましょう。

INDEX関数: 指定した範囲から、指定した行と列に位置するセルの値を返す関数。

MATCH関数: 指定した値が範囲内の何番目にあるかを返す関数。

この2つを組み合わせることで、特定の値の場所を探し、その位置にある別のデータを取得することが可能です。


INDEX関数とMATCH関数の基本的な使い方

INDEX関数の基本構文

=INDEX(範囲, 行番号, [列番号])

範囲: データの範囲。

行番号: 範囲内のデータから取得したい行の番号。

列番号: 省略可能で、範囲内の列番号を指定。

MATCH関数の基本構文

=MATCH(検索値, 検索範囲, [一致の種類])

検索値: 検索したい値。

検索範囲: データ内で検索する範囲。

● 一致の種類: 0(完全一致)、1(以下の最大値)、-1(以上の最小値)。


基本例:INDEXとMATCHを使ってデータを検索

INDEXとMATCHを組み合わせることで、範囲内の行や列を指定してデータを抽出できます。

実例1:IDから名前を検索

データ例

ID名前部署
001田中営業
002鈴木開発
003佐藤サポート
004中村総務

ID「002」に対応する「名前」を検索して取得する場合、次のようにINDEXとMATCHを組み合わせます。

=INDEX(B2:B5, MATCH("002", A2:A5, 0))

解説

  • MATCH("002", A2:A5, 0)が「002」が何行目にあるかを返し、その行をINDEX関数が指定した範囲から取得します。
  • 結果: 「鈴木」と表示されます。

MATCH("002", A2:A5, 0)が「002」が何行目にあるかを返し、その行をINDEX関数が指定した範囲から取得します。

● 結果: 「鈴木」と表示されます


応用例:左右や複数列にまたがる検索

INDEXとMATCHを組み合わせることで、VLOOKUPではカバーできない柔軟な検索が可能です。特に、左右にまたがるデータや複数条件を含む検索に便利です。

実例2:部署名からIDを検索

通常のVLOOKUPでは範囲の左端からしか検索できませんが、INDEXとMATCHを使えば、右側にある列からも検索が可能です。

データ例

ID名前部署
001田中営業
002鈴木開発
003佐藤サポート
004中村総務

「サポート」部署のIDを検索する場合、以下のように書きます。

=INDEX(A2:A5, MATCH("サポート", C2:C5, 0))

解説

MATCH("サポート", C2:C5, 0)で「サポート」が何行目にあるかを取得し、その行のIDをINDEX関数で取得します。

● 結果: 「003」と表示されます。


複数条件での検索

INDEXとMATCHを組み合わせれば、複数の条件を基にしたデータの検索も可能です。たとえば、「名前」と「部署」の両方を条件にして検索を行う場合、配列数式を使います。

実例3:名前と部署を基にした検索

データ例

名前部署年齢
田中営業30
田中開発28
鈴木営業35
佐藤サポート26

「名前が田中」で「部署が開発」の年齢を取得する場合、次のようにINDEXとMATCHを使います。

=INDEX(C2:C5, MATCH(1, (A2:A5="田中")*(B2:B5="開発"), 0))

(A2:A5="田中")*(B2:B5="開発")が「田中」でかつ「開発」である行を指定します。

結果: 「28」と表示されます。


MATCHとINDEXの応用:データ範囲の動的参照

MATCH関数とINDEX関数を使って、範囲を動的に指定することで、データが増減しても自動で範囲が調整される柔軟な設定が可能です。

実例4:最終行のデータを自動取得

データ例

売上
1月500,000
2月600,000
3月700,000

この例で、売上の最終行のデータを自動で取得するには、以下のように設定します。

=INDEX(B2:B100, MATCH(9.99E+307, B2:B100))

解説

MATCH(9.99E+307, B2:B100)は範囲内の最終行を探し出し、INDEXがそのデータを取得します。

結果: 最新の売上額「700,000」が返されます。


INDEXとMATCHのメリットとデメリット

メリット

柔軟な検索: VLOOKUPでは対応できない左右の検索や複数条件での検索が可能。

効率的なデータ管理: 範囲を動的に指定することで、データの増減に対応しやすい。

他の関数との組み合わせが容易: FILTERやIFなどの関数と組み合わせて、さらに柔軟なデータ検索が可能。

デメリット

数式が複雑になる: INDEXとMATCHを組み合わせると、数式がやや複雑になるため、誤りが発生しやすい。

初心者には理解が難しい: VLOOKUPよりも構造が複雑で、スプレッドシートに不慣れな場合は操作に時間がかかることがある。


INDEXとMATCHの応用例

ここからはINDEXとMATCHを活用したさらに実践的な応用例を紹介します。

実例5:別シートからのデータ参照

INDEXとMATCHを使えば、別シートのデータも簡単に参照できます。

データ例(シート名:売上データ)

商品ID商品名売上
A001ノートPC150,000
A002タブレット100,000
A003スマホ200,000

「売上データ」シートから「A002」の売上を検索して取得する場合、以下のように記述します。

=INDEX(売上データ!C2:C4, MATCH("A002", 売上データ!A2:A4, 0))

解説

● MATCHで商品ID「A002」の位置を特定し、INDEXがその売上を取得します。

● 結果: 「100,000」と表示されます。


まとめ

INDEXとMATCHを組み合わせることで、VLOOKUPでは対応できない左右の検索や複数条件の検索が可能になります。さらに、データの動的な参照や別シートの参照にも活用でき、柔軟で効率的なデータ管理が実現します。スプレッドシートでのデータ操作がさらに便利になるこの方法をぜひ活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ドローン撮影、動画編集、サイト運営、パソコンスキルを説明紹介

コメント

コメントする

目次