获取另一张表上未找到值的行

获取另一张表上未找到值的行

我正在尝试做以下事情。我已经第 1 页第 2 页

在第三张工作表中,我需要获取工作表 1 中工作表 1 的 INSTRUMENT 在工作表 2 的 FIM 中找不到的行(例如,由于工作表 1 的任何 INSTRUMENTS 都不在工作表 2 的 FIM 中,因此工作表 3 将包含工作表 1 的行)。我该怎么做?谢谢

答案1

类似查找函数VLOOKUP()可用于查找查找值并返回结果,或未找到查找值并返回 #ERROR!。显然,这通常以“积极”意义使用,寻找结果,但也可以以“消极”意义使用,不寻找结果,而是寻找 #ERROR!。

然后,还可以使用函数测试是否存在 #ERROR!。ISERROR()有时IFERROR()可以使用,但许多情况不适合使用IFERROR()的机制,这是其中之一。ISERROR()将在这里用作更复杂的NOT()。然后,如果未找到 INSTRUMENT,则IF()测试将成功,因为它正在寻找这样的失败。在这种情况下,TRUE 结果是查找单元格的值。如果测试失败(INSTRUMENT 存在于那里),则返回“”。

下面的公式可以实现这一点:

=IF(ISERROR(VLOOKUP(A2:A9,$F$2:$F$5,1,FALSE)),A2:A9,"")

如果您有SPILL功能,则只需第一个单元格需要公式。如果没有,请将其粘贴到第一个单元格中,然后使用 {CSE} 执行旧方法创建数组。

请注意,公式的结果会分布在整个输出范围内。要对它们进行分组,您需要对它们进行排序,将空的结果放在列表的底部,这样它们就不会影响列表的易用性,也不会影响列表的外观,无论哪一个对您来说更重要。

但是,对于存在的字符,例如上面公式中的“”,甚至更高的字符(例如UNICODE(160)空格),几乎任何字符都会排序到列表的开头。您可以通过多种方式实现这一点,包括复制,然后粘贴为值,然后排序,但要使用公式来做到这一点,这样您就不需要交互了,您可以尝试以下方法:

=SUBSTITUTE(SORT(IF(ISERROR(VLOOKUP(A2:A9,$F$2:$F$5,1,FALSE)),A2:A9,"ZZZZZZZZZZ")),"ZZZZZZZZZZ","")

您使用一个字符串,该字符串应始终排在列表末尾。此公式中使用了“ZZZZZZZZZZ”。然后,您SORT()将所有这些强制排在末尾,并将您想要首先看到的放在顶部。然后,您SUBSTITUTE()将该字符串替换为空格,例如“”,然后所有这些“消失”……当然不是真的,只是表面上如此。

(显然,您需要在选择或调整的公式中使用真实的参考。)

相关内容