It技術

GoogleスプレッドシートでLEFT JOINする方法


基本の書き方

シート1:

ID 名前
1 たま
2 ミルク
3 ボス
4 ラッキー

シート2:

ID 毛並み
1 三毛
2
4

このように表があり、IDをキーとしてシート1に左外部結合で「毛並み」列を追加させたい時を解説します。

1
=ARRAYFORMULA(IFNA(VLOOKUP('シート1'!A:A, 'シート2'!A:B, 2, FALSE)))

上記の関数をシート1の**☆の箇所**に書きます

ID 名前
1 たま
2 ミルク
3 ボス
4 ラッキー

そうすると以下のように出力されます。

ID 名前 毛並み
1 たま 三毛
2 ミルク
3 ボス
4 ラッキー

複数列を結合したい時

シート1:

ID 名前
1 たま
2 ミルク
3 ボス
4 ラッキー

シート2が以下のように複数列ある場合です:

ID 毛並み 体重 年齢
1 三毛 5kg 3歳
2 10kg 7歳
4 2kg 5ヶ月
1
=ARRAYFORMULA(IFNA(VLOOKUP('Sheet1 のコピー'!A:A, 'シート2'!A:D, {2,3,4}, FALSE)))

この関数をシート1の「名前」左側に書きます(☆の箇所)

ID 名前
1 たま
2 ミルク
3 ボス
4 ラッキー

以下のように出力されます。

ID 名前 毛並み 体重 年齢
1 たま 三毛 5kg 3歳
2 ミルク 10kg 7歳
3 ボス
4 ラッキー 2kg 5ヶ月

カスタマイズ方法

シート2の表示範囲指定

シート2の表示範囲についての説明です。

1
=ARRAYFORMULA(IFNA(VLOOKUP('Sheet1 のコピー'!A:A, 'シート2'!A:D, {2,3,4}, FALSE)))

先ほど説明した複数列を結合するための関数を用います。

  • ’シート2’!A:D :シート2の参照する範囲を指定している。
  • {2, 3, 4} :表示するシート2の列番号を指定している。そのため、{2, 3, 4} の範囲を変更することで、結合結果に表示させる列を増やしたり減らしたりすることができます。

例えば先ほどの結合結果で、「体重」は表示させたくないとします。

1
=ARRAYFORMULA(IFNA(VLOOKUP('Sheet1 のコピー'!A:A, 'シート2'!A:D, {2,4}, FALSE)))

上記のように、 {2, 3, 4} だった列番号を {2, 4} とすることで結合結果に体重を表示させないことが可能です。

ちなみに列番号はシート2において以下のようにナンバリングされてます。この列番号3を除去したので体重が表示されなくなったわけです。

ID 毛並み 体重 年齢
1 三毛 5kg 3歳
2 10kg 7歳
4 2kg 5ヶ月
列番号 1 列番号 2 列番号 3 列番号 4

あいまい検索

1
=ARRAYFORMULA(IFNA(VLOOKUP('Sheet1 のコピー'!A:A, 'シート2'!A:D, {2,3,4}, FALSE)))
  • FALSE :完全一致での検索
  • TRUE : あいまい検索

TRUEを指定すると近い値でマッチする、曖昧検索を行うことができます。

先ほどの例でTRUEを使用すると、IDをキーとして結合しているので、ID番号が近いものが結合結果に表示されます。

ID3のボス猫にID2の猫のデータが入っていることがわかります。

ID 名前 毛並み 体重 年齢
1 たま 三毛 5kg 3歳
2 ミルク 10kg 7歳
3 ボス 10kg 7歳
4 ラッキー 2kg 5ヶ月