目次
Google SheetsのVLOOKUPは、あるキーレコードに対応するデータをシートから探すときに使います。 しかし、VLOOKUPにはすぐに限界があります。 だから、INDEX MATCHを学んで、タスクのためのリソースを増やしたほうがいいのです。
Google SheetsのINDEX MATCHは、INDEXとMATCHという2つの関数を組み合わせたものです。 この2つを同時に使うことで、Google SheetsのVLOOKUPのより良い代替手段として機能します。 このブログ記事では、その機能を一緒に見つけていきましょう。 その前に、スプレッドシートにおけるそれぞれの役割を簡単に説明したいと思います。
Google SheetsのMATCH関数
Google SheetsのMATCHはとてもシンプルで、データをスキャンして特定の値の位置を返してくれる。
=MATCH(search_key、range、[search_type])- 検索キー は、あなたが探しているレコードです。 必要です。
- レンジ は、検索する行または列です。 必要です。
MATCHは1次元の配列(行または列)のみを受け付ける。
- 検索タイプ はオプションで、完全一致か近似一致かを定義します。 省略した場合は、デフォルトで 1 となります。
- 1 は昇順にソートされることを意味します。 この関数は,指定した値以下の最大の値を取得します。 検索キー .
- 0 は、範囲がソートされていない場合に、関数が完全に一致するものを探すようにします。
- -1 は、レコードが降順ソートでランク付けされることを示唆しています。 この場合、この関数は、あなたの 検索キー .
例えば、あるベリーが全ベリーのリストの中でどの位置にあるかを知るには、Google Sheetsに次のようなMATCH式が必要である。
=MATCH("ブルーベリー", A1:A10, 0)
Google SheetsのINDEX関数
MATCHが値を探す場所(範囲内の位置)を示すのに対し、Google SheetsのINDEX関数は、行と列のオフセットに基づいて値そのものを取得するものです。
=INDEX(参照, [行], [列])- 参照 は、見るべき範囲です。 必須
- 列 は、範囲の最初のセルからオフセットする行数です。 オプションで、省略された場合は0です。
- 列 と同じように 列 はオフセットの列数である。 また、オプションで、省略時は0である。
オプションの引数(行と列)を両方指定すると、Google Sheets INDEXは目的のセルからレコードを返します。
=index(a1:c10, 7, 1)
これらの引数のうち1つを省略すると、この関数はそれに応じて行または列全体を取得します。
=index(a1:c10, 7)
GoogleシートでINDEX MATCHを使う方法 - 計算式の例
INDEXとMATCHを一緒に使うと、Google SheetsのVLOOKUPの代わりに、キー値に基づいてテーブルから必要なレコードをフェッチすることができるのです。
Google SheetsのINDEX MATCH式を初めて構築する
同じ表からクランベリーの在庫情報を得たいとする。 B列とC列を入れ替えただけだ(理由は後ほど説明する)。
- これで、すべてのベリーがC列にリストアップされました。Google SheetsのMATCH機能を使えば、クランベリーの正確な行を特定することができます。 8
=MATCH("クランベリー", C1:C10, 0)
- そのMATCH式全体を 列 引数で指定します。
=INDEX(A1:C10, MATCH("Cranberry", C1:C10, 0))
こちらは、クランベリーが入っている列を全部返します。
- しかし、必要なのは株式情報だけなので、ルックアップカラムの番号も指定してください。 3
=INDEX(A1:C10, MATCH("Cranberry", C1:C10,0), 2)
- ほらね
- さらに進んで、最後のカラム・インジケータをあきらめることもできます( 2 ルックアップ・カラムのみを使用する場合は必要ありません。 B1:B10 )ではなく、テーブル全体( A1:C10 ) を第一引数にとります。
=INDEX(B1:B10, MATCH("Cranberry", C1:C10, 0))
ヒント:さまざまなベリーの有無を確認するには、ドロップダウン・リスト( E2 ) を作成し、そのリストのあるセルに MATCH 関数を参照します。
=index(b1:b10, match(e2, c1:c10, 0))
ベリーを選択すると、それに応じて関連する数値が変化します。
関連項目: Excelでデータを失うことなく行を結合する方法
Google SheetsのINDEX MATCHがVLOOKUPより優れている理由
Google SheetsのINDEX MATCHは、テーブルから値を検索し、同じ行から関連する別のレコードを返すことは既にご存知でしょう。 Google SheetsのVLOOKUPも全く同じです。 では、なぜ悩むのでしょうか?
そのことです。 INDEX MATCH 持つ みょうと VLOOKUPより。
- 左側からのルックアップが可能 Google SheetsのINDEX MATCH関数は、検索列の左側を検索することができます。 VLOOKUPは常に範囲の最初の列を検索し、その右側にマッチを探します。
- 新しい列を追加したり、既存の列を移動したりする際に、参照が乱れることがありません。 列を追加したり移動したりしても、INDEX MATCHは結果に干渉することなく、自動的に変更を反映します。 列参照を使用しているので、Google Sheetsによって瞬時に調整されます。
VLOOKUPでこれを実行しようとすると、ルックアップカラムのセル参照ではなく、注文番号を必要とします。 したがって、別のカラムが同じ場所を占めるので、間違った値を得ることになります - カラム 2 を例に挙げます。
- テキストケースを検討する が必要です(詳しくは後述します)。
- 複数の条件に基づく垂直方向のルックアップに使用できる。
最後の2点については、以下で詳しく見ていただきたい。
Google SheetsのINDEX MATCHで大文字小文字を区別してv-lookupする
INDEX MATCHは、大文字と小文字を区別してくれるのが魅力です。
仮に、すべてのベリーがバラ売り(カウンターで計量)と箱詰めの2種類で販売されているとすると、リストには2種類のベリーが異なるケースで書かれており、それぞれのIDもケースによって異なる。
では、ある方法で販売されているベリーの在庫情報を調べるにはどうしたらよいのでしょうか。 VLOOKUPは大文字小文字に関係なく、最初に見つけた名前を返します。
幸いなことに、Google SheetsのINDEX MATCHはそれを正しく行うことができます。 あなたは、FINDまたはEXACTという追加の関数を使用する必要があるだけです。
例1.大文字・小文字を区別してVlookupする場合のFIND
FINDはGoogle Sheetsの大文字小文字を区別する関数なので、大文字小文字を区別して縦に調べるのに向いています。
=ArrayFormula(INDEX(B2:B19, MATCH(1, FIND(E2, C2:C19)), 0))
この式でどうなるか見てみましょう。
- FINDはC列をスキャンする( C2:C19 ) から記録する。 E2 ( チェリー のように、アルファベットの大文字と小文字を区別して、そのセルを「マーク」します。 1 .
- MATCHは、このマークを検索します。 1 - を同じ列に並べます( C ) を作成し、その行の番号をINDEXに渡す。
- INDEXはB列のその行に降りてくる( B2:B19 ) を作成し、必要なレコードをお客様に取り寄せます。
- 数式を作り終えたら、Ctrl+Shift+Enter を押して、ArrayFormula を先頭に追加します。 これがないと、FIND は配列(複数のセル)を検索できないからです。 または、''FIND''と入力することもできます。 配列式 をキーボードから入力します。
例2.大文字・小文字を区別するVlookupのためのEXACT
FINDをEXACTに置き換えると、後者はテキストの大文字小文字を含めて全く同じ文字を持つレコードを探します。
唯一の違いは、EXACTが一致を「マーク」することです。 真 数より 1 したがって、MATCHの第1引数は次のようになります。 真 :
=ArrayFormula(INDEX(B2:B19, MATCH(TRUE, EXACT(E2, C2:C19), 0)))
Google SheetsのINDEX MATCHで複数条件を指定する。
レコードを取得するための条件が複数ある場合はどうすればよいのでしょうか。
の価格を確認してみましょう。 チェリー で販売されているものです。 PPバケツ であり、すでに 駈け出し :
ドロップダウンリストの条件をすべてF列に並べました。 そして、複数の条件に対応しているのは、VLOOKUPではなく、Google SheetsのINDEX MATCHです。 必要な計算式はこちらです。
=ArrayFormula(INDEX(B2:B24, MATCH(CONCATENATE(F2:F4), A2:A24&C2:C24&D2:D24, 0),))
慌てないでください! :) その理屈は、実はとてもシンプルです。
- 連結(f2:f4) は、このように条件を指定したセルからの3つのレコードを1つの文字列にまとめます。
CherryPPバケットランニングアウト
これは 検索キー をMATCHに、つまり、テーブルの中で何を探しているのか。
- A2:A24&C2:C24&D2:D24 になる レンジ 3つの条件は3つの列に分かれているため、この方法ではそれらを組み合わせるような形になります。
チェリー段ボールトレイ在庫あり
チェリーフィルム包装在庫切れ
CherryPPバケットランニングアウト
その他
- MATCH - の最後の引数。 0 - に完全に一致するものを探すことが可能になります。 CherryPPバケットランニングアウト は、3行目にあります。
- そして、INDEXはB列の3行目からレコードを取得するのです。
- ArrayFormula は、他の関数が配列を操作できるようにするために使用されます。
ヒント:数式が一致しない場合、エラーが返されます。 それを避けるには、この数式全体をIFERRORで囲み(これを第一引数にする)、第二引数にエラーの代わりにセルに表示したいものを入力します。
=IFERROR(ArrayFormula(INDEX(B2:B27, MATCH(CONCATENATE(F2:F4), A2:A27&C2:C27&D2:D27, 0),)), "見つかりませんでした(※)")
Google SheetsのINDEX MATCHのより良い代替方法 - 複数のVLOOKUPのマッチング
VLOOKUPとINDEX MATCH、どちらのルックアップ関数を好むにせよ、より良い代替案があります。
Multiple VLOOKUP Matchesは、Google Sheetsのための特別なアドオンで、次のような目的で設計されています。
- ルックアップ
- 八方美人
- 異なるデータ型に対して、複数の条件で検索することができます。 テキスト、数字、日付、時間 その他
- 必要な数だけマッチを取得する(もちろん、テーブルの中に同じ数のマッチがあることが前提です)。
インターフェースもわかりやすいので、「これでいいのか」と迷うことはありません。
- ソースの範囲を選択します。
- 返すマッチとカラムの数を設定します。
- あらかじめ用意された演算子で条件を細かく調整する( contains, =, not empty , 間 など)。
また、できるようになります。
- 内覧会
- 置き場所を決める
- と方法: 式として、または値のみ
Google Workspace Marketplaceからインストールし、チュートリアルページで各項目の詳細をご確認ください。
また、特別な解説ビデオも用意しました。
下のコメント欄か、次の記事でお会いしましょう ;)