皆さんこんにちは。合同会社StudioData代表のRyumaと申します。
Excelやスプシの検索関数と言えばVLOOKUPなどを思い浮かべる方も多いと思いますが、今回は別の関数でデータの検索をするやり方を解説していきます。
INDEX関数の基礎
まずは下のようにスプシ内に表を用意します。
表の中から特定の値を検索したいときにVLOOKUP関数を使いたくなりますが、この表では使うことが出来ません。
VLOOKUP関数は選択した範囲の一番左にある列を参照して指定された値を取得しますが、この表にはそれがありません。「名前」を使って参照しようと思っても、A列には名前が重複している行が多く存在しますので決まった値を取ってくることはVLOOKUPでは出来ないのです。
そんな時にINDEX関数を使います。
=INDEX(範囲,縦位置,横位置)
今回は指定範囲が1列なので、「横位置」は省略できます。
=INDEX(B2:B13,C15)
このように記述し、「B2からB13の範囲のうち、C15セル行目(4行目)の値を取得」という命令文になりました。
これがINDEX関数です。
MATCH関数の基礎
続いてMATCH関数について解説します。
MATCH関数は指定範囲の中から、指定した単語を見つけ出し、それが上から何行目にあるかを取得する関数です。
=MATCH(検索値, 範囲, 検索の型)
表のE列に商品IDを追加したので、MATCH関数を使ってIDの行番号を取得してみましょう。
=MATCH(C15, E2:E13, false)
検索する値はC15セルに記入してある「O-3」、範囲はE2からE13、検索の型は「完全一致」である「false」を指定してあります。
ちゃんとO-3が上から6番目であるため「6」と返してくれました。
INDEX関数とMATCH関数を組み合わせよう
今回紹介したINDEX関数とMATCH関数を組み回せることによって、VLOOKUP関数の代わりを作ることができます。
冒頭でも説明したように、VLOOKUP関数は範囲の一番左の列に検索値がないと使えないですが、このやり方だと検索値が範囲の何列目にあっても大丈夫です。
下の表を使って実際に検索をしてみましょう。
今回は、商品IDがB-4の商品の値段を取得してみたいと思います。
計算の流れとしては、MATCH関数で「B-4」がE列の何行目かを取得し、INDEX関数でC列の取得した行の値を持ってくるというイメージです。
=INDEX(C2:C13,MATCH(C15,E2:E13,false))
ちゃんと商品IDがB-4の値段を取得出来ました。
このようにVLOOKUP関数が使えないシチュエーションでもINDEXとMATCHを組み合わせることで代用出来ます。
データの検索関数まとめ
今回はVLOOKUP以外の検索関数をまとめて解説しました。
Excelやスプレッドシートでは、同じような操作が全く違う関数や方法で代用出来たりしますので、自分が知っている方法が使えないからといって諦めずに別の方法を試してみる癖をつけましょう。
最後まで読んでいただきありがとうございました!