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:
- 单元格列K = C6(Bob)
和
- L> 0的单元格
你可以在这里find一个非常详细的解释: 索引匹配组合 。
这是VLOOKUP的一个“怪癖”。 它将拉出它find的第一场比赛。 在这种情况下,第一个“史蒂夫”有一个空值,所以它是0.第一个简也是空白,所以它再次返回0等等。 你可以简单地对引用的表进行sorting,这样第一个匹配就是带有值的那个,或者你可以写一个从单元格J6开始的不同公式。
=IF(L6<>"",K6,"")
之后,将您的VLOOKUP更改为以下内容
=VLOOKUP(C6,J:L,3,0)
您也可以更新您命名的范围参考,以便您可以使用它,但这些列对于此公式可以正常工作。 这样做VLOOKUP只会在L6中有值时才会拉动等等。
让我知道这是否适合你。