使用场景:用“证件号码”查找“Sheet4表”(272181行)的“姓名”列,填充到“Sheet1”表的空白列中。为了演示传说中的二进制查找,我们预先对“Sheet4”进行了按“证件号码”排序。
1、VLOOKUP:
我们第一次使用公式为:=VLOOKUP(B2,Sheet4!$A$2:$B$272181,1,FALSE),这个公式并没有找到数据,出现的是“#N/A”。这个很奇怪,我在有的表,用这样的范围查找,是可以出现正确结果的。
我们第二次使用公式为:=VLOOKUP(B2,Sheet4!$B$2:$B$272181,1,FALSE),这样是能出来结果了。然后我们把这个公式粘贴到这一列的全部单元格中,共883740行,特别慢,我没有等待它结束,强制关闭掉了。
2、XLOOKUP:
我们第一次使用公式为:=XLOOKUP(B2,Sheet4!$B$2:$B$272181,Sheet4!$A$2:$A$272181),出现结果是正确的。然后我们把这个公式粘贴到这一列的全部单元格中,共883740行,用时30秒,结果完全正确。
我们第二次尝试使用二进制搜索,使用公式为:=XLOOKUP(B2,Sheet4!$B$2:$B$272181,Sheet4!$A$2:$A$272181,,0,2)
出现结果是正确的。然后我们把这个公式粘贴到这一列的全部单元格中,共883740行,用时15秒,结果完全正确。
3、注意:使用XLOOKUP,两个表要去掉筛选条件。如果有筛选,XLOOKUP用的是可见数据,而不是整表数据。XLOOKUP的二进制搜索确实要快一倍,但是大数据表的排序是很慢的。而且加了二进制搜索,如果不排序,是出不来结果的。所以二进制搜索并不推荐。最后注意一点,我所做的测试使用的是excel,并不是“套娃收费”的那款软件。那款软件的XLOOKUP我也测试了,结果就不公布了,容易挨揍。
4、结论:如果你有excel使用,请用XLOOKUP,放弃VLOOKUP。XLOOKUP真的很简单,而且不会出错,速度还快。VLOOKUP比较复杂,慢,要命的是会出现错误。
标签:二进制,公式,VLOOKUP,excel,XLOOKUP,272181,Sheet4 From: https://blog.csdn.net/mrdzhu/article/details/139458071