如何获得两组交集


Answers:


21

无需跳入GAS,标准电子表格功能可以轻松解决此问题。

请在您的示例中将以下内容粘贴到单元格中

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

匹配函数生成两个范围完全错误的,除非找到一个匹配的笛卡尔乘积。当一个匹配它返回一个索引到第二范围发现。

过滤器的功能扔掉所有的废话,只返回正确的索引值。

IFERROR帮助,如果有根本没有匹配得到一个整齐的结果。

范围可以是任意长度,如$ A $ 2:$ A惯用语所示。


3

这个小脚本将比较两个范围,作为一个公式:

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)

通过工具菜单,脚本编辑器添加脚本。


我欢迎普通的旧配方奶粉。我马上就能想到他们....
雅各布·扬·图因斯特拉

1
可能应该/必须不能 .......
雅各布月Tuinstra

1
谢谢,@雅各布!我从来没有真正的理由在gDocs中使用公式-感谢您为我打开了世界!
NoamNelke 2013年

3

如果您要查找两个范围的减法(范围1的元素不在范围2中),例如:

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

这个小脚本将比较两个范围,作为一个公式:

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的值

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.