Excel在String VLOOKUP失败

Ton*_*ark 16 excel excel-formula

我有一张看起来像这样的桌子

   B   C
43 XS  6
44 S   11
45 M   16
46 L   21
47 XL  26
48 XXL 31
Run Code Online (Sandbox Code Playgroud)

我写了这个公式:

`VLOOKUP("S",B43:C48,2)`
Run Code Online (Sandbox Code Playgroud)

它返回值为21.为什么?!它应该返回11!

更新我在另一个表中重现了这个确切的错误.VLOOKUP当搜索值是数字时起作用,但在使用字符串时始终失败.

e.J*_*mes 26

除非你用第四个参数指定"完全匹配",否则VLOOKUP会做一些奇怪的事情,如下所示:

=VLOOKUP("S",B43:C48,2,FALSE)
Run Code Online (Sandbox Code Playgroud)

从Excel的帮助文件:

VLOOKUP(Lookup_Array中,则table_array,Col_index_num为,range_lookup)

如果range_lookup为TRUE,则table_array第一列中的值必须按升序排列:..., - 2,-1,0,1,2,...,AZ,FALSE,TRUE; 否则VLOOKUP可能无法给出正确的值.如果range_lookup为FALSE,则不需要对table_array进行排序.

并且:

range_lookup是一个逻辑值,指定您是要VLOOKUP查找完全匹配还是近似匹配.如果为TRUE或省略,则返回近似匹配.换句话说,如果未找到完全匹配,lookup_value则返回小于的下一个最大值.如果FALSE,VLOOKUP将找到完全匹配.如果找不到,#N/A则返回错误值.

  • 只是猜测为什么:从未排序的列表中确定粗略匹配将是不可能的昂贵,因为您可能必须多次迭代列表. (2认同)
  • @Ciaran Keating:我认为你是对的.Excel可能默认使用二进制搜索.这可以解释帮助文件中的措辞以及hatorade的例子中的奇怪结果. (2认同)