VLOOKUP即使在第一个结果下面的行中有一个值,也会返回0

我有一个问题,我的查找。

我有以下格式的数据:(请参见截图)

VLOOKUP问题IM HAVING

我运行我的VLOOKUP公式= VLOOKUP(C6:C11,named_range,2,FALSE)

“named_range”就是我用来命名的范围,所以一切都是绝对的参考。 指定的范围是右侧的整个select

我知道vlookup会返回find的第一个结果的值,这就是为什么Steve,Ben和Jane返回“0”的原因。

不过,我想弄清楚如何让它做到以下几点:

如果vlookupfind一个具有与之关联的空白单元格的匹配值,请查看该列表,直到find与该单元格相邻的单元格中的匹配值。

这是预期的结果,我想(这是手动进行的):

预期结果

我已经做了大量的研究,但是找不到解决这个问题的办法……我正朝着MATCH和INDEX的方向倾斜,但是似乎没有任何东西符合我的要求。

在此先感谢希望我解释好。

我能想到的最简单的方法是添加一个testing来查看单元格是否空白:

=VLOOKUP(C6,IF(ISBLANK($L$6:$L$18),0,$K$6:$L$18),2,FALSE) 

这是一个数组公式,所以需要使用Ctrl + Shift + Enterinput。

解决问题的另一种方法是:

 {=INDEX(K6:L17,MATCH(1,(K6:K17=C6)*(L6:L17>0),0),2)} 

这也是一个数组公式(所以你需要使用Ctrl + Shift + Enter)。

星号是数组公式的AND运算符(OR运算符是+)。 它的作用是,MATCH公式正在寻找第一行,两个条件都是TRUE,即1:

  1. 单元格列K = C6(Bob)

  1. L> 0的单元格

你可以在这里find一个非常详细的解释: 索引匹配组合 。

这是VLOOKUP的一个“怪癖”。 它将拉出它find的第一场比赛。 在这种情况下,第一个“史蒂夫”有一个空值,所以它是0.第一个简也是空白,所以它再次返回0等等。 你可以简单地对引用的表进行sorting,这样第一个匹配就是带有值的那个,或者你可以写一个从单元格J6开始的不同公式。

 =IF(L6<>"",K6,"") 

之后,将您的VLOOKUP更改为以下内容

 =VLOOKUP(C6,J:L,3,0) 

您也可以更新您命名的范围参考,以便您可以使用它,但这些列对于此公式可以正常工作。 这样做VLOOKUP只会在L6中有值时才会拉动等等。

让我知道这是否适合你。