Excel 为什么是;如果是isna vlookup“;快于;countif";?

Excel 为什么是;如果是isna vlookup“;快于;countif";?,excel,performance,excel-formula,Excel,Performance,Excel Formula,我一直在试图找出两份相同的报告中是否存在任何数据,但这些数据来自两个不同的月份 如果一行的ID在下个月存在,那么我称之为existing。我能看到什么是新的,什么是继承的。一切都好 我能想到的唯一方法就是使用 =COUNTIF("column of next month IDs","this months ID") 一直这样下去,然后求和。但是,这非常慢,并且会锁定Excel,因为它可以在60k和100k行之间运行 一位同事建议我使用 =IF(ISNA(VLOOKUP("this months

我一直在试图找出两份相同的报告中是否存在任何数据,但这些数据来自两个不同的月份

如果一行的ID在下个月存在,那么我称之为existing。我能看到什么是新的,什么是继承的。一切都好

我能想到的唯一方法就是使用

=COUNTIF("column of next month IDs","this months ID")
一直这样下去,然后求和。但是,这非常慢,并且会锁定Excel,因为它可以在60k和100k行之间运行

一位同事建议我使用

=IF(ISNA(VLOOKUP("this months ID","column of next months ID",1,false)),0,1)

并将其相加。现在仍然需要一段时间,但速度明显加快。为什么会这样?这似乎需要更多的步骤和计算。

速度有多快?请参阅。
VLOOKUP
可以更快,因为它只搜索“下个月ID列”中“本月ID”的第一个一致项
COUNTIF
必须统计“下个月ID列”中出现的所有“本月ID”。所以它必须在整个“下个月ID列”上循环。明白了,VLOOKUP找到它并停止,就像COUNTIF必须一路走到哪里,如果你希望看到它不止一次,那么应该使用COUNTIF。也许我搞错了,但是
匹配
会更快吗?比如
=IF(ISNA(匹配(“本月ID”,“下个月ID列”,0)),0,1)