スプレッドシートのINDEX、MATCH関数で簡易検索を実装

スプレッドシートでindex関数とMATCH関数を組み合わせる

スプレッドシートで指定した位置の値を返すINDEX関数と、検索した値の位置を返すMATCH関数を組み合わせることで簡易検索のような仕組みを実装する方法について解説します。

INDEX関数とMATCH関数を組み合わせる

指定した位置の値を返すINDEX関数検索した値の位置を返すMATCH関数を組み合わせることで、簡易検索のような仕組みをスプレッドシートで実装してみましょう。通常のスプレッドシート内の検索や置換とは異なり、データベースのようなものがあってそれらを活かす前提で参考にしていただければと思います。

それぞれの関数については別の記事で詳しく解説していますのでそちらをお読みください。

スプレッドシートのINDEX関数の使い方
スプレッドシートのINDEX関数で指定した行と列の値を返す
スプレッドシートで参照範囲内から指定した行と列の値を返すINDEX関数について解説します。単体で利用する機会は少ないものの、他の関数を組み合わせることで活用の幅が拡がる便利な関数です。
スプレッドシートのMATCH関数
スプレッドシートのMATCH関数で指定値の相対的な位置を返す
スプレッドシートで検索した値の相対的な位置を返してくれるMATCH関数について解説します。

今回は以前使ったサッカー選手のリストを使って選手名を検索したら所属チームが表示される様にしましょう。

関数のためのサンプルデータ

選手リストはデータベース扱いとしたいので別シートから参照する形にして、新しいシートのA1のセルに打ち込んだ選手名の情報が出る様にします。

index関数とmatch関数の組み合わせ

上段の例では選手名を打ち込むと所属チームが表示される様にしています。

=index(‘'選手データベース’'!A2:J56,MATCH(A1,’'選手データベース’'!A2:A56),5)

index関数は参照範囲の中から行と列を指定して中の値を返す関数となります。別シートのデータベースとなる範囲を指定し、行と列を指定するのですが、チーム情報は参照するデータベースの5列目に入っているので列の部分は『5』とします。行数の指定はMATCH関数を利用して、名前に応じて異なる値が入るようにしたいので『A1』のセルを指定し、入力された文字によってMATCH条件が変わる様にします。

例のMATCH関数の部分はA1に入力された『吉田 麻也』という名前と一致するものが参照範囲の何行目にあるか返すため『4』という数値が返されています。そのため、4行目、5列目に入っている『サンプドリア』という文字が表示されるわけです。

ちなみに選手の情報が全て欲しいという場合は3つ目の引数で列の指定を『0』にすることで行単位で表示させることが可能です。

=index(‘'選手データベース’'!A2:J56,MATCH(A1,’'選手データベース’'!A2:A56),0)

まとめ

INDEX関数とMATCH関数を組み合わせることで別シートから簡易検索を行う例について解説してきました、正直、検索や抽出、並び替えといったより自由度の高い操作を行うならQUERY関数の方が圧倒的に便利なので、あまり実用性はないかもしれません。しかし、これらの関数をこのように組み合わせることでこんなこともできるのだという理解を持っていくことで、応用力が高まっていくのではないかと思います。

スプレッドシートの関数の基本的なものを紹介しています。

便利な数式と関数
スプレッドシートで最初に覚えたい便利な基本関数一覧
スプレッドシートで最初に覚えると便利な使い勝手のいい基本的な関数を紹介します。

スプレッドシートの使い方については下記の記事でまとめていますので併せてお読みください。

スプレッドシートの使い方完全マニュアル
スプレッドシートの使い方 完全マニュアル
スプレッドシート初心者が一通り使えるようになるまでの知識を体系的にまとめました。