2つのセットの交差点を取得する方法


16

スプレッドシートに2つのリスト(固有のセット)があり、2つのリストの共通部分を取得したい。

これを行う簡単な方法はありますか?

私が達成したいものの例を次に示します。

リスト1リスト2期待される結果

 a 1 e
 b 2 f
 ce      
 d 4      
 ef      
 f 6      

Googleシートの例


ドキュメントを共有して、期待される結果について少し説明してもらえますか?
ジェイコブヤントゥインストラ

回答:


20

GASに飛び込む必要はありません。標準のスプレッドシート関数がこれを簡単に処理します。

あなたの例のセルに以下を貼り付けてください

=iferror(filter($A$2:$A, match($A$2:$A, B2:$B , false)), "no match")

マッチ関数は、一致が見つかった場合を除き、エラーの完全な二つの範囲のデカルト積を生成します。一致見つかった場合、2番目の範囲にインデックスを返します。

フィルタ機能は、離れて、すべてのがらくたを返すのみ正しくインデックス付きの値をスローします。

IFERRORは、すべての一致がない場合はきちんとした結果を取得するのに役立ちます。

$ A $ 2:$ Aイディオムで示されるように、範囲の長さは任意です。


3

この小さなスクリプトは、式として2つの範囲を比較します。

function COMPARE(array1, array2) {
  var array = [];  
  for(i=0; i<array1.length; i++) {
    for(j=0; j<array2.length; j++) {
      if(array1[i][0] == array2[j][0]) {
        // the extra square brackets will make it a 2D array, 
        // aligning it vertically
        array.push([array1[i][0]]);
      }
    }
  }
  return array;
}

シートで、セルD2に次の式を追加できます。

=COMPARE(A2:A7,B2:B7)

ツールメニューのスクリプトエディタからスクリプトを追加します。


私は昔ながらの式を歓迎します。私は.....すぐに考えることができ
ヤコブ月Tuinstra

1
可能性が /でなければならない必要がありませんでし .......
ヤコブ月Tuinstra

1
ありがとう、@ Jacob!gDocsで数式を使用する本当の理由はありませんでした-この世界を開いてくれてありがとう!
-NoamNelke

3

次のように、2つの範囲(範囲2にない範囲1の要素)の減算を見つける方法を探している場合:

List 1  List 2  Expected result

 a       1        a
 b       2        b
 c       e        c
 d       4        d
 e       f      
 f       6    

ここにあなたのための式があります:

=iferror(filter($A$2:$A, iserror(match($A$2:$A, B2:$B , false))), "no match")

0

この小さなスクリプトは、式として2つの範囲を比較します。

function intersect(array1, array2) {
  var array = [];  
  for(i=0; i<array1.length; i++) {
    for(j=0; j<array2.length; j++) {
      if(array1[i][0] == array2[j][0]) {
        // the extra square brackets will make it a 2D array, 
        // aligning it vertically
        array.push([array1[i][0]]);
      }
    }
  }
  return array;
}

追加:

function extersect(array1, array2) {
  var array = [];  
  var tmp = true;
  for(i=0; i<array1.length; i++) {
    for(j=0; j<array2.length; j++) {
      if(array1[i][0] == array2[j][0]) {
        // the extra square brackets will make it a 2D array, 
        // aligning it vertically
        tmp = false;
      }      
    }
    if(tmp == true) 
    {
      array.push([array1[i][0]]);
    }
    tmp = true;
  }
  return array;
}

シートで、セルD2に次の式を追加できます。

=intersect(A2:A7,B2:B7)

ツールメニューのスクリプトエディタからスクリプトを追加します。

= intersect(A2:A7、B2:B7)は、両方の配列array1、array2に存在する結果を返します。

= extersect(A2:A7、B2:B7)は、範囲B2:B7に存在しないarray1の値を返します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.