Excel 中的数组差异和/或交集

Excel 中的数组差异和/或交集

如何获取数组之间的差异和交集?(可能具有动态数组功能)

我想要 {"a","b","c","d","e"}-{"a","b","c"} 返回 {"d","e"}

=FILTER({"a","b","c","d","e"},{"a","b","c","d","e"}<>{"a","b","c"}) 

没有用

PS 对于交叉点(即 excel 中的空格符号),它也不起作用,谢谢

答案1

在 FILTER 中使用 ISERROR(MATCH()):

=FILTER({"a","b","c","d","e"},ISERROR(MATCH({"a","b","c","d","e"},{"a","b","c"},0)))

如果在第二个数组中找不到该值,MATCH 将返回 ERROR。

在此处输入图片描述

答案2

如果数组常量(或范围)按字母顺序整齐排列,则答案Scott Craner有效。但检查表明,如果不是,则结果不太清晰。

我尝试使用IFERROR()而不是ISERROR(),似乎效果很好。(ISERROR()没有 和有 一样好MATCH()。除了……)然后我突然想到数据可能没有排序,因此,由于这两种方法都依赖于位置,这可能会导致错误的结果。例如,交换比较左字符串中“d”和“c”的位置。使用IFERROR(),您会得到错误的结果。仅使用ISERROR(),您会得到错误的结果。放MATCH()回去,您仍然会得到错误的结果,但并非在所有情况下都是如此。

我承认数据很可能是格式正确的,就像例子中那样,很有可能。90% 的用途?70%?99%?即使对于发帖者来说是 100%,但对于其他人来说可能并非如此。

即使数据格式不符合此目的,下面的方法也能很好地工作:

=FILTER(SORT({"a","b","c","d","e"},,,TRUE),IFERROR(SORT({"a","b","c","d","e"},,,TRUE)<>SORT({"a","b","c"},,,TRUE),TRUE))

导致这一切的问题在于比较是按位置进行的,即从第 1 位到第 1 位,从第 2 位到第 2 位,依此类推。然后FILTER()有一系列TRUE/FALSE与其给定范围(或数组常量)位置相匹配的 。(这就是为什么必须是五元素数组与三元素数组进行比较,而不是相反。这样,就有五个结果与要过滤的五个元素相匹配,而不仅仅是三个结果。)

因此你必须确保位置上的物品是同类的,而不是苹果和橘子之间的。

对于稍微复杂一点的情况,即使这样也行不通。比如{"a","b","b","b","c"}数组常量或范围。这需要更复杂的公式,并且很大程度上取决于给定电子表格的实际数据。

相关内容