好吧,我玩了一下,我认为这工作原理是一样的,并且没有第一个 IF 语句:
=IFERROR(INDEX(A$1:A$2500,SMALL(IF(ISNA(MATCH($A$1:$A$2500&$B$1:$B$2500,List1!$A$1:$A$2500&List1!$B$1:$B$2500,0)),ROW($B$1:$B$2500)-ROW($B$1)+1),ROWS(F$2:F2))),"")
示例数据中的该部分:
ROWS(F$2:F2)<=(SUMPRODUCT(--ISNA(MATCH($A$1:$A$2500,List1!$A$1:$A$2500,0))))
据我了解,它只看到输入公式的行号低于“新”项目的数量,但它没有任何目的,因为当您将公式拖动超过所需的距离时,您仍然会出现错误,而不是预期的空白。所以我认为它可以完全删除(在尝试将其替换为COUNTA()
相反)并使用IFERROR()
直接获取详细信息的部分。
编辑:把它划掉。有关这些部分的重要性,请参阅巴里·胡迪尼的评论。
Next, you had this:
ROW($B$1:$B$2500)-ROW($B$1)+1
-ROW($B$1)+1
always回报0
,所以我发现它没有任何用处,并将其完全删除。
它仍然很长,我猜需要一些时间,但我相信它应该比以前快一个档次:)