目次
本日のブログでは、2つのGoogleシートをマージする方法を紹介します。 VLOOKUP、INDEX/MATCH、QUERY、Merge Sheetsアドオンを使って、共通の列にあるレコードを基に別のシートのセルを更新することができます。
VLOOKUP関数を使ったGoogleシートの統合
2つのGoogleシートをマッチングしてマージする必要があるとき、まず頼りになるのはVLOOKUP機能です。
構文 & 使用法
この関数は、指定した列からあるキー値を検索し、同じ行から関連するレコードの一つを別のテーブルまたはシートに取り出します。
Google SheetsのVLOOKUPは難しい関数の一つと思われがちですが、実はとてもわかりやすく、一度知ってしまえば簡単です。
その構成要素をざっと見てみましょう。
=VLOOKUP(search_key、range、index、[is_sorted])- 検索キー は、探しているキー値で、テキスト文字列、数値、セル参照など何でも構いません。
- レンジ を探すセル群(または表)です。 検索キー と、どこから関連レコードを引っ張ってくるか。
注:Google SheetsのVLOOKUPは、常に最初の列をスキャンしています。 レンジ に対して 検索キー .
- インデックス はその中の列の番号 レンジ からデータを取り出したい場所。
例えば、検索する範囲がA2:E20で、データを取得するのがE列であれば5を入力します。しかし、範囲がD2:E20であれば、E列からレコードを取得するために2を入力する必要があります。
- [is_sorted]です。 は、省略可能な唯一の引数です。 これは、キー値を持つカラムがソートされているかどうか (TRUE) を指定するために使用します。 TRUE の場合は最も近いものを、FALSE の場合は完全に一致するものを使用します。 省略すると、デフォルトで TRUE が使用されます。
ヒント:Google SheetsのVLOOKUPについて詳しく説明しています。
これらの論点を踏まえて、VLOOKUPを使って2つのGoogleシートを統合してみましょう。
例えば、Sheet2 に果実とその ID が記載された小さなテーブルがあるとする。 しかし、在庫状況は不明である。
このテーブルを埋めるのが目的なので、メインテーブルと呼ぶことにしましょう。
また、Sheet1には、在庫状況などすべてのデータが揃った別のテーブルがあります。
データを取得するために調べるので、ルックアップテーブルと呼ぶことにします。
Google SheetsのVLOOKUP機能を使って、この2つのシートを結合します。 この機能は、両方のテーブルのベリーをマッチングし、ルックアップから対応する「ストック」情報をメインテーブルに取り込みます。
=VLOOKUP(B2,Sheet1!$B$2:$C$10,2,FALSE)です。
この式で2つのGoogleシートを正確にマージする方法を説明します。
- Sheet1(ルックアップシート)のB列にあるB2(メインシート)の値を探します。
注意:VLOOKUPは指定した範囲の1列目をスキャンすることを忘れないでください -。 Sheet1!$B$2:$C$10 .
注:数式を列の下にコピーするので、結果が壊れないように、この範囲はすべての行で同じである必要があるため、範囲に絶対参照を使用しています。
- 最後のFALSEは、(ルックアップ・シートの)B列のデータがソートされていないため、完全一致のみが考慮されることを意味します。
- 一致した場合、Google SheetsのVLOOKUPはその範囲の2列目(C列)から関連レコードを引き出します。
Google SheetsのVLOOKUPが返すエラーを非表示にする - IFERROR
しかし、その#N/Aのエラーはどうでしょうか?
このようなセルは、他のシートにマッチするものがなく、返すものがない行に見られます。 幸い、このようなセルを空にしておく方法があります。
Google SheetsのVLOOKUPをIFERRORでくくるだけです。
=IFERROR(VLOOKUP(B2,Sheet1!$B$2:$C$10,2,FALSE),"")
ヒント:Google Sheets VLOOKUPが返すその他のエラーは、このガイドの解決策を使用してトラップし、修正することができます。
マッチ&アンプ; カラム全体のレコードを一度に更新 - ArrayFormula
もう一つ、Google Sheetsのデータを列ごと一度にマッチングしてマージする方法を紹介します。
ArrayFormulaという関数が1つ増えただけで、派手さはありません。
Google SheetsのVLOOKUPで1セルのキーレコードを列全体に置き換えて、この数式全体をArrayFormulaの中に入れるだけでいいのです。
=ArrayFormula(IFERROR(VLOOKUP(B2:B10,Sheet1!$B$2:$C$10,2,FALSE),""))
この方法では、数式を列の下にコピーする必要はありません。 ArrayFormulaは、各セルに正しい結果をすぐに返します。
Google SheetsのVLOOKUPはこのような単純な作業に最適ですが、いくつかの制限があります。 その一つは、左側を見ることができないことです。 どんな範囲を指定しても、常にその最初の列をスキャンしてしまうのです。
したがって、2つのGoogleシートをマージし、ベリー(2列目)に基づいてID(1列目のデータ)を引き出す必要がある場合、VLOOKUPは役に立ちません。 正しい数式を構築できないだけです。
このような場合、INDEX MATCH for Google Sheetsの出番です。
INDEX MATCH duoを使ったGoogleシートのマッチングとマージ
INDEX MATCH、いやINDEX & MATCHは、実は2つの異なるGoogle Sheetsの関数です。 しかし、この2つを一緒に使うと、まるで次のレベルのVLOOKUPのようなものになります。
はい、彼らはまた、Googleシートをマージ:共通のキーレコードに基づいて、別のテーブルからレコードで1テーブルのセルを更新します。
しかし、VLOOKUPの持つ制約をすべて無視しているため、その分よくできています。
INDEX MATCHの基本的な使い方は、このブログの記事で説明しましたので、今日は割愛しますが、Googleスプレッドシートの中で直接どのように動作するか、いくつかの例を示します。 上記と同じサンプルテーブルを使用します。
Google SheetsでのINDEX MATCHの使用例
まず、これらのGoogleシートを統合し、一致するすべてのベリーの在庫状況を更新しましょう。
=INDEX(Sheet1!$C$1:$C$10,MATCH(B2,Sheet1!$B$1:$B$10,0))
INDEX & MATCHをこのように併用すると、どのように機能するのでしょうか?
- MATCH は B2 を見て、Sheet1 の B 列にある全く同じレコードを検索します。 見つかったら、その値を含む行の番号(私の場合は 10)を返します。
- INDEXはSheet1の10行目にも適用されますが、別の列(C)から値を取得するだけです。
それでは、Google SheetsのVLOOKUPではできないこと、つまりシートをマージして一番左の列を必要なIDで更新することに対して、INDEX MATCHを試してみましょう。
=INDEX(Sheet1!$A$2:$A$10,MATCH(B2,Sheet1!$B$2:$B$10,0))
イージー-イージー :)
Google SheetsのINDEX MATCHで返されるエラーの処理
さらに進んで、マッチしないセルでのエラーを取り除こう。 IFERRORがまた役に立つ。 Google SheetsのINDEX MATCHを最初の引数として置くだけだ。
例1.
=IFERROR(INDEX(Sheet1!$C$1:$C$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
例2.
=IFERROR(INDEX(Sheet1!$A$2:$A$10,MATCH(B2,Sheet1!$B$2:$B$10,0)),"")
さて、INDEX MATCHを使ってそれらのGoogleシートを結合し、列全体のセルを一度に更新するにはどうしたらよいでしょうか。
ちょっと問題があって、ArrayFormulaはこの2つでは動作しないんです。
INDEX MATCH式を列の下にコピーするか、Google SheetsのQUERY関数を代わりに使用する必要があります。
QUERYを使用してGoogleシートを結合し、セルを更新する。
Google SheetsのQUERYは、スプレッドシートの中で最も強力な機能です。 このことを念頭に置いて、テーブルをマージする方法、つまり、異なるシートから値をマージする方法を提供するのは当然のことです。
=QUERY(data, query, [headers])ヒント:Google SheetsのQUERYを使ったことがない人は、このチュートリアルでその独特な言語を理解しましょう。
を更新するためのQUERY式はどのようなものでしょうか? 在庫 の欄には、実際のデータで?
=QUERY(Sheet1!$A$2:$C$10, "select C where&Sheet4!$B2:$B$10&""")
- Google SheetsのQUERYは、ルックアップシート(メインテーブルに引き出す必要のあるレコードを含むSheet1)を参照します。
- で、C 列から B 列がメインテーブルの berries と一致するセルをすべて返します。
マッチしないセルのエラーだけなくしてくれ。
=IFERROR(QUERY(Sheet1!$A$2:$C$10, "select C where&Sheet4!$B2:$B$10&""),"""")
まあ、その方がいいんですけどね :)
異なるGoogleスプレッドシートからテーブルをマージする - IMPORTRANGE機能
もう一つ、別のGoogleスプレッドシート(ファイル)に存在するシートを統合する機能を紹介したい。
この機能をIMPORTRANGEと呼びます。
=IMPORTRANGE("spreadsheet_url", "range_string")。- 前者は、データを取得したスプレッドシートへのリンクになります。
- 後者はシート&ランプ、そのスプレッドシートから取り出したい範囲
注:この機能の重要なニュアンスを見逃さないために、Googleドキュメントで確認することを強くお勧めします。
ルックアップシート(参照データ)がスプレッドシート2(別名ルックアップスプレッドシート)にあるとします。 メインシートがスプレッドシート1(メインスプレッドシート)にあるとします。
注:IMPORTRANGEを使用するには、両方のファイルを接続する必要があります。 また、Google Sheetでは、セルに数式を入力した後、すぐにそのためのボタンを提案しますが 入力 このステップバイステップガイドは、そのお手伝いをするものです。
以下は、IMPORTRANGEを使って異なるファイルからGoogleシートをマージする例で、今日学んだ各機能を使用しています。
例1.IMPORTRANGE + VLOOKUP
IMPORTRAGEをVLOOKUPの範囲として使用し、2つの別々のGoogleスプレッドシートをマージすることができます。
=ArrayFormula(IFERROR(VLOOKUP(B2:B10,IMPORTRANGE("//docs.google.com/spreadsheets/d/1Sq...j7o/edit", "Sheet1!$B$2:$C$10"),2,FALSE)),"")
例2:IMPORTRANGE+INDEX MATCH
INDEX MATCH & IMPORTRANGEについては、INDEXの範囲とMATCHの範囲の2回、別のスプレッドシートを参照する必要があるため、数式がかさばります。
=IFERROR(INDEX(IMPORTRANGE("//docs.google.com/spreadsheets/d/1Sq...j7o/edit", "Sheet1!$A$1:$A$10"),MATCH(B2,IMPORTRANGE("//docs.google.com/spreadsheets/d/1Sq...j7o/edit", "Sheet1!$B$2:$B$10"), 0)),""")
例3.IMPORTRANGE + QUERY
この2つの数式は、個人的にとても気に入っています。 この2つの数式を一緒に使えば、スプレッドシートのほとんどのことに対処できます。 別々のスプレッドシートからGoogleシートをマージすることも例外ではありません。
=IFERROR(QUERY(IMPORTRANGE("//docs.google.com/spreadsheets/d/1Sq...j7o/edit", "Sheet1!$A$2:$C$10"), "select Col3 where&QUERY!$B2:$B$10&""),""")
ふぅ〜。
関数 & 数式については以上です。
どのような関数やランプを選ぶかは自由です。上記の例で独自の式を構築してください。
或いは...
...Googleシートをマージしてくれる特別なツールを試してみてください! ;)
数式を使わずにデータを結合する方法 - Merge Sheets add-on for Google Sheets
数式を作成したり、数式を学ぶ時間さえない場合、または単に共通のレコードに基づいてデータを結合する最も簡単な方法を探している場合、Merge Sheets は完璧なものになるでしょう。
チェックボックスにチェックを入れるだけの簡単な5ステップです。
- メインシートを選択する
- ルックアップシートを選択する
- キーカラム(一致させるレコードを含む列)をチェックボックスでマークする。
- は、更新するカラムを選択します。
また、選択したすべてのオプションをシナリオに保存し、必要なときに再利用することも可能です。
3分間のデモ映像で、その様子をご覧ください。
Google Sheets ストアから Merge Sheets をインストールし、以下の手順に従って、別のシートの情報を使って自分のテーブルを更新してみることをお勧めします。
表計算ソフトの計算式例
Googleシートをマージする & データを更新する - 式例 (ファイルのコピーを取る)