将range_lookup设置为TRUE的VLOOKUP的真算法是什么?
我无法找到解释VLOOKUP的真实行为的Microsoft参考,其range_lookup设置为'TRUE'(这意味着找到“近似匹配”)。它们的引用仅指示您按升序对查找表进行排序以获得“正确结果”,但不解释算法如何工作以便可以预测其在未排序表中的行为。 当range_lookup设置为“TRUE”时,许多在线文章试图通过提出以下行为来解释为什么排序查找表很重要: VLOOKUP沿着最左侧列的列表向下,直到它找到一个大于查找值的查找值然后停止查找。 VLOOKUP返回与其停止查看的行中的查找值相关联的输出值。 这无疑将解释为什么未排序的列表会导致有问题的输出。但是,我仍然决定测试它,看看这是否确实是这种功能的方式。考虑以下查找表及其在A1中的左上角单元格: 1 a 99 b 3 c 4 d 现在让我们做一些值查找: 搜索1:在所提出的算法的上下文中考虑VLOOKUP(1,A1:B4,2,TRUE)。VLOOKUP沿着左列向下,看到1,继续前进,看到99.这大于1.它返回它上面的行的第二列中的值。精细。算法期望返回'a'。Excel返回'a'。 搜索2:使用VLOOKUP(2,A1,B4,2,TRUE),VLOOKUP向左下列,看到1,继续前进,看到99.这大于2.它返回第二列中的值它上面的那一行。根据算法工作。算法期望返回'a'。Excel返回'a'。 搜索3:使用VLOOKUP(3,A1,B4,2,TRUE),VLOOKUP向左下列,看到1,继续前进,看到99.这大于3.它返回第二列中的值它上面的那一行。根据算法工作。算法期望返回'a'。Excel返回'a'。 搜索4:使用VLOOKUP(3,A1,B4,2,TRUE),VLOOKUP向左下列,看到1,继续前进,看到99.这大于4.它应该返回第二列中的值在它上面的行。但事实并非如此。算法期望返回'a'但Excel返回'd'! 有谁知道实际的算法? 编辑:我犯了一个错误,但我的问题仍然存在。请参阅下面的评论。