2つのGoogleシートをマージし、共通のレコードに基づいてデータを更新する

  • これを共有
Michael Brown

本日のブログでは、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シートを正確にマージする方法を説明します。

    1. Sheet1(ルックアップシート)のB列にあるB2(メインシート)の値を探します。

      注意:VLOOKUPは指定した範囲の1列目をスキャンすることを忘れないでください -。 Sheet1!$B$2:$C$10 .

      注:数式を列の下にコピーするので、結果が壊れないように、この範囲はすべての行で同じである必要があるため、範囲に絶対参照を使用しています。

    2. 最後のFALSEは、(ルックアップ・シートの)B列のデータがソートされていないため、完全一致のみが考慮されることを意味します。
    3. 一致した場合、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をこのように併用すると、どのように機能するのでしょうか?

    1. MATCH は B2 を見て、Sheet1 の B 列にある全く同じレコードを検索します。 見つかったら、その値を含む行の番号(私の場合は 10)を返します。
    2. 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ステップです。

    1. メインシートを選択する
    2. ルックアップシートを選択する
    3. キーカラム(一致させるレコードを含む列)をチェックボックスでマークする。
    4. は、更新するカラムを選択します。

  • 更新されたレコードを色やステータス欄でマークするなど、追加オプションを調整することができます。
  • また、選択したすべてのオプションをシナリオに保存し、必要なときに再利用することも可能です。

    3分間のデモ映像で、その様子をご覧ください。

    Google Sheets ストアから Merge Sheets をインストールし、以下の手順に従って、別のシートの情報を使って自分のテーブルを更新してみることをお勧めします。

    表計算ソフトの計算式例

    Googleシートをマージする & データを更新する - 式例 (ファイルのコピーを取る)

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。