目次
2つのGoogleシートをマージするとき、1つの列のレコードを更新するだけでなく、関連する列全体や一致しない行も引き出せることをご存知ですか? 今日はVLOOKUP、INDEX/MATCH、QUERY関数とMerge Sheetsアドオンでそれを行う方法をお見せします。
前回、2つのGoogleシートのマージについて、マッチングとデータの更新の方法を紹介しました。 今回は、セルの更新はそのままに、他の関連する列やマッチングしない行を引っ張ってくることにします。
これが私のルックアップテーブルです。 今日、ここから必要なデータをすべて取り出します。
今回、ベンダー名とレーティングのカラムが2つ増えました。 この情報を別のテーブルでStockカラムを更新し、ベンダーも引っ張ってきます。 まあ、レーティングもでしょうけど :)
いつものように、いくつかの機能と特別なアドオンを使って作業を進めます。
VLOOKUPでGoogleシートを結合し、関連する列を追加する。
Google SheetsのVLOOKUPを覚えていますか? 前回の記事で、データのマッチングといくつかのセルの更新に使いました。
もし、まだこの機能が怖いと思っているのなら、今日も使うので、一度向き合って学ぶべき時が来たのです :)
ヒント:時間を節約するための迅速なソリューションをお探しなら、すぐにMerge Sheetsに会いに行ってください。
簡単に式の構文をおさらいしておきましょう。
=VLOOKUP(search_key、range、index、[is_sorted])- 検索キー は、あなたが探しているものです。
- レンジ は、あなたが探しているところです。
- インデックス は値を返すべき列の番号である。
- [is_sorted]です。 は完全に任意であり、キーカラムがソートされているかどうかを示す。
ヒント:Google SheetsのVLOOKUPのチュートリアルをブログで紹介しています。
2つのGoogleシートを統合し、単純にStock列のデータを更新する場合、このVLOOKUP式を使用しました。
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,2,FALSE),""))
IFERRORはマッチしないセルにエラーがないことを確認し、ARRAYFORMULAは列全体を一度に処理しました。
では、ルックアップテーブルから新しいカラムとしてベンダーも引き出すには、どのような変更が必要でしょうか。
まあ、せっかくなので インデックス は、Google SheetsのVLOOKUPにどの列からデータを取得するかを指示するもので、微調整が必要なのはこの列だと言ってよいでしょう。
一番簡単な方法は、隣の列に数式をコピーして、その数式を増やすだけです。 インデックス 逐一 2 をもって 3 ):
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,3,FALSE),""))
ただし、追加で取得したい列の数だけ、インデックスを変えて同じ数式を挿入する必要があります。
幸いなことに、もっと良い方法があります。 それは、配列を作ることです。 配列を使えば、引きたいすべての列を一つのインデックスにまとめることができます。
Google Sheets で配列を作成する際には、値やセル/範囲の参照を括弧で囲んでリストアップします。 ={1, 2, 3} または ={1; 2; 3}
これらのレコードのシート内での配置は、デリミタに依存する。
- セミコロンを使用すると、数値は列の中で異なる行を占めることになります。
後者は、まさにGoogle SheetsのVLOOKUPのインデックス引数で行う必要があります。
Googleシートをマージして、2列目を更新して3列目を引っ張るので、これらの列で配列を作成する必要があります。 {2, 3} :
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,{2,3},FALSE),""))
この方法では、Google SheetsのVLOOKUP式で名前を照合し、在庫情報を更新して、隣接する空の列に関連ベンダーを追加します。
INDEX MATCHによるシートの結合と列の追加。
次にINDEX MATCHですが、この2つの機能は、Googleシートを結合する際に、VLOOKUPの制限を回避するため、VLOOKUPと競合します。
ヒント:このチュートリアルでは、Google SheetsのINDEX MATCHを知ることができます。
まず、マッチングに基づいて1つの列を単純にマージする計算式を思い出してください。
=IFERROR(INDEX(Sheet1!$C$1:$C$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
この式では Sheet1!$C$1:$C$10 は、いつでも必要な値を持つカラムです。 Sheet1!$B$1:$B$10 と同じ値を満たします。 B2 を現在のテーブルで表示します。
これらの点を踏まえて Sheet1!$C$1:$C$10 テーブルの結合やセルの更新だけでなく、カラムを追加するために変更する必要があるもの。
Google SheetsのVLOOKUPと違って、何も凝ったことはしていません。 更新する列と追加する列をすべて範囲指定するだけです。 私の場合、次のようになります。 Sheet1!$C$1:$D$10 :
=IFERROR(INDEX(Sheet1!$C$1:$D$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
あるいは、範囲を広げて E10 をクリックすると、1列だけでなく2列が追加されます。
=IFERROR(INDEX(Sheet1!$C$1:$E$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
注:これらの余分なレコードは常に隣接するカラムに入ります。 これらのカラムに他の値がある場合、数式はそれらを上書きしません。 その場合、#REFエラーとそれに対応するヒントが表示されます。
それらのセルをクリアするか、その左側に新しい列を追加すると、計算式の結果が表示されます。
Googleシートのマージ、セルの更新、関連する列の追加など、すべてQUERYを使用して行います。
QUERYはGoogleスプレッドシートの中で最も強力な機能の一つです。 ですから、今日はこの機能を使って、いくつかのGoogleシートをマージし、セルを更新し、同時に追加の列を追加するのは当然です。
この関数が他の関数と異なる点は、引数の1つがコマンド言語を使用している点である。
ヒント:Google SheetsのQUERY関数の使い方が気になる方は、こちらのブログ記事をご覧ください。
まず、セルを更新する数式を思い出してみましょう。
=IFERROR(QUERY(Sheet1!$A$2:$C$10, "select C where&QUERY!$B2:$B$10&""),"""")
ここでは、QUERY は Sheet1 の必要なデータを含むテーブルを調べ、B 列のセルを現在の新しいテーブルとマッチさせ、これらのシートをマージします。 IFERROR は、結果をエラーなしにします。
これらのマッチのために追加のカラムを追加するには、この式に2つの小さな変更を加える必要があります。
- に必要なカラムをすべてリストアップします。 選ぶ コマンドを使用します。
...C,D,Eを選択...
- は、それに応じて範囲を広げて見てください。
...QUERY(Sheet1!$A$2:$E$10,...)..
ここに完全な公式があります。
=IFERROR(QUERY(Sheet1!$A$2:$E$10, "select C,D,E where&Sheet4!$B2:$B$10&""),"""")
これは、在庫カラムを更新し、ルックアップテーブルからこのメインテーブルに2つの余分なカラムを引き出します。
FILTER + VLOOKUPを使用して、一致しない行を追加する方法
2つのGoogleシートをマージし、古い情報を新しいものに更新し、余分な関連値を持つ新しい列を取得することを想像してみてください。
手元のレコードの全体像を把握するために、他にできることはありますか?
そうすれば、更新された関連情報との一致だけでなく、非一致も含めて、すべての値を一カ所に集めることができます。
Google SheetsのVLOOKUPはその方法を知っているので、とても驚きました。 FILTER関数と一緒に使うと、Googleシートをマージして、一致しない行も追加してくれます。
ヒント:最後に、あるアドオンがチェックボックス1つで同じことをする方法も紹介します。
Google SheetsのFILTERの引数は、かなり明確です。
- レンジ は、フィルタリングしたいデータです。
- 条件1 は、フィルタリング基準を持つ列または行である。
- criteria2, criteria3, etc. は完全にオプションです。 複数の基準を使用する場合に使用します。
ヒント:Google SheetsのFILTER関数については、このブログ記事で詳しく解説しています。
では、この2つの関数はどのように連携してGoogleシートを結合するのでしょうか。 さて、FILTERはVLOOKUPで作成したフィルタリング条件に基づいてデータを返します。
この数式を見てください。
=FILTER(Sheet1!$A$2:$E$10,ISERROR(VLOOKUP(Sheet1!$B$2:$B$10,$B$2:$C$10,2,FALSE)=1))。
これは、2つのGoogleのテーブルをスキャンして一致するものを探し、一致しない行を一方のテーブルからもう一方のテーブルに引き出します。
その仕組みを説明しよう。
- FILTERは、ルックアップシート(すべてのデータを含むテーブル。 Sheet1!$A$2:$E$10 )で、VLOOKUPを使用して正しい行を取得します。
- VLOOKUPは、ルックアップシートのB列から項目名を取り出し、現在のテーブルの項目名と照合する。 一致しない場合、VLOOKUPはエラーと言う。
- ISERRORはそのようなエラーに1をつけ、FILTERにその行を別のシートに取り込むように指示します。
その結果、メインテーブルにはないベリー類が3行追加で計算式に取り込まれます。
この方法は少し遊んでみると、それほど複雑ではありません :)
しかし、もしあなたがこのことに時間を費やしたくないのであれば、より良い、より早い方法があります - 関数と数式を一つも使わない方法です。
数式を使わずにデータを結合する方法 - Merge Sheets アドオン
Merge Sheetsアドオンは、Googleシートを結合する際の3つの可能性をすべて網羅します。
- 一致したセルに基づき、関連するセルを更新する
- マッチのための新しいカラムが追加されます。
- 一致しないレコードを持つ行を挿入します。
混乱を避けるため、プロセスは次のように分かれています。 5つのシンプルなステップ :
- 最初の2つ はあなたが テーブルを選択する たとえ、それらが異なるスプレッドシートにあるとしても。
- オン 三分の一 を、あなたは キーカラムを選択する という、マッチングをチェックする必要があります。
- があります。 第4ステップ ができます。 更新するカラムを設定する 新記録で または追加 を1つのシートから別のシートに変更することができます。
結果が出るまで数秒。
Google Sheets ストアから Merge Sheets をインストールすると、より大きなテーブルをより速く処理できることがわかります。 Merge Sheets のおかげで、より多くの時間を重要なことに使えるようになります。
この3分間のデモビデオも残しておきますので、あなたの決心を後押ししてくれるでしょう :)
表計算ソフトの計算式例
Googleシートをマージし、関連する列を追加する & 一致しない行 - 数式の例(このスプレッドシートのコピーを作成します。)