スプレッドシートで指定した位置の値を返すINDEX関数と、検索した値の位置を返すMATCH関数を組み合わせることで簡易検索のような仕組みを実装する方法について解説します。
指定した位置の値を返すINDEX関数と検索した値の位置を返すMATCH関数を組み合わせることで、簡易検索のような仕組みをスプレッドシートで実装してみましょう。通常のスプレッドシート内の検索や置換とは異なり、データベースのようなものがあってそれらを活かす前提で参考にしていただければと思います。
それぞれの関数については別の記事で詳しく解説していますのでそちらをお読みください。
今回は以前使ったサッカー選手のリストを使って選手名を検索したら所属チームが表示される様にしましょう。
選手リストはデータベース扱いとしたいので別シートから参照する形にして、新しいシートのA1のセルに打ち込んだ選手名の情報が出る様にします。
上段の例では選手名を打ち込むと所属チームが表示される様にしています。
=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関数の方が圧倒的に便利なので、あまり実用性はないかもしれません。しかし、これらの関数をこのように組み合わせることでこんなこともできるのだという理解を持っていくことで、応用力が高まっていくのではないかと思います。
スプレッドシートの関数の基本的なものを紹介しています。
スプレッドシートの使い方については下記の記事でまとめていますので併せてお読みください。