(Gスプレッドシート)2つの列を比較して重複する値(重複しない値)を抽出する

 Googleスプレッドシートで2つの列を比較し、一方の列に存在する値のうち、もう一方の列にも存在するもの(または存在しないもの)を抽出する方法についてです。

  • FILTER関数とCOUNTIFを用いることで、2つの列の値の一致・不一致を判定して値を抽出できます。
  • QUERY関数を用いる方法もあります。

手順

FILTER関数を用いる方法

f:id:accs2014:20191209003915p:plain:right:w500

 グループ1、グループ2としてそれぞれ複数の都市の名前が並んでいます。
 まずはグループ1のうち、グループ2にも存在しているものを抽出することとします。B13セルに次のように入力します。

=FILTER(B3:B9,COUNTIF(D3:D11,B3:B9)>0)

 B3:B11の値のそれぞれについてD3:D11に存在する数をカウントし、結果が1以上になるものを抽出しています。
 一見ARRAYFORMULAが必要にも見えますが不要です。
 

f:id:accs2014:20191209003919p:plain:right:w500

 結果はこうなります。

f:id:accs2014:20191209003923p:plain:right:w500

 同様に、グループ1の都市のうち、グループ2に存在しないものを求めた結果です。
 B13セルに次のように記した結果となっています。

=FILTER(B3:B9,COUNTIF(D3:D11,B3:B9)=0)

QUERY関数を用いる方法

 QUERY関数を用いる方法については、次の記事に記載している例が答えとなっていますのでそちらを参照ください。
 QUERY関数そのものがやや難解ですし、セル参照に基づきマッチング文字列を生成する方法ですので参照するセルが莫大になるとエラーになる恐れがありますが、他の条件と組み合わせる場合はこちらが有利かと思います。

www.officeisyours.com