有多种方式都可以实现数据匹配,那么你知道哪种性能最快吗?

适用场景

小型数据优先考虑易用性,大型数据优先考虑性能。

测试条件

在 50 万的数据中匹配出对应的内容。

VLOOKUP 完全匹配

=VLOOKUP(A1, '工作表1'!A:B, 2, 0)

耗时约 22 秒左右。

INDEX + MATCH

=INDEX('工作表1'!B:B, MATCH(A1, '工作表1'!A:A, 0))

耗时约 1.7 秒左右。

INDIRECT + MATCH

=INDIRECT("工作表1!B"&MATCH(A1, '工作表1'!A:A, 0))

耗时约 1.1 秒左右。

IF + VLOOKUP 近似匹配

=VLOOKUP(A1, '工作表1'!A:B, 2, 1)
耗时约 184 毫秒。

从以上测试结果可以得出 VLOOKUP 的完全匹配是最慢的,MATCH 完全匹配的速度要比 VLOOKUP 快非常多,但是在相同使用 MATCH 的情况下,使用 INDIRECT 的速度要比 INDEX 略微快一些。VLOOKUP 的近似匹配速度是最快的,但是也有缺陷,近似匹配没办法保证数据是精准的。

根据以上结论可以将这些组合起来使用,在复杂数据中达到最佳的性能。优先使用 VLOOKUP 近似匹配,判断内容是否一致,若是一致返回对应结果,若是不一致再使用 INDIRECT + MATCH 进行匹配。因为 VLOOKUP 的近似匹配运行速度几乎是毫秒级的,如果能匹配出数据要大幅的节约了 MATCH 查询所要消耗的时间。

=IF(IFERROR(VLOOKUP(A1, '工作表1'!A:A, 1, 1)) = A1, VLOOKUP(A1, '工作表1'!A:B, 2, 1), INDIRECT("工作表1!B"&MATCH(A1, '工作表1'!A:A, 0)))

为你推荐:Google Excel 性能优化教程目录