我的 vlookup 遇到问题。
我有以下格式的数据:(参见屏幕截图)
我将 VLOOKUP 公式运行为 =VLOOKUP(C6:C11,named_range,2,FALSE)
“named_range”是我用于命名范围的内容,因此一切都是绝对参考。命名范围是右侧的整个选择范围
我知道 vlookup 返回它找到的第一个结果的值,这就是为什么为 Steve、Ben 和 Jane 返回“0”的原因。
但是我正在尝试弄清楚如何让它执行以下操作:
如果 vlookup 找到具有与之关联的空白单元格的匹配值,请向下查找列表,直到找到旁边的单元格中包含某些内容的匹配值。
这是我想要的预期结果(当然这是手动制作的):
我做了很多研究,但找不到解决这个问题的方法...我倾向于 MATCH 和 INDEX 的方向,但似乎没有什么符合我的要求。
预先感谢希望我能解释清楚。
我能想到的最简单的方法是添加一个测试来查看单元格是否为空白:
=VLOOKUP(C6,IF(ISBLANK($L$6:$L$18),0,$K$6:$L$18),2,FALSE)
这是一个数组公式,因此需要使用 Ctrl+Shift+Enter 输入。
解决问题的另一种方法是这样的:
{=INDEX(K6:L17,MATCH(1,(K6:K17=C6)*(L6:L17>0),0),2)}
这也是一个数组公式(因此您需要使用 Ctrl+Shift+Enter)。
星号是数组公式的 AND 运算符(OR 运算符是 +)。接下来,MATCH 公式会查找第一行,其中两个条件都为 TRUE,即 1:
和
您可以在这里找到非常详尽的解释:Index-Match-Combination。
这是 VLOOKUP 的“怪癖”之一。 它将拉出它找到的第一个匹配项。 在这种情况下,第一个“Steve”有一个空白值,因此它是 0。第一个 Jane 也是空白,因此它再次返回 0 等等。有几种方法可以解决这个问题。 您可以简单地对引用的表格进行排序,以便第一个匹配项是具有值的表格,或者您可以从单元格 J6 开始编写不同的公式。
=IF(L6<>"",K6,"")
之后将 VLOOKUP 更改为以下内容
=VLOOKUP(C6,J:L,3,0)
您还可以更新命名范围引用,以便可以使用它,但这些列对于该公式来说可以正常工作。通过这种方式,VLOOKUP 仅当 L6 中有值时才会提取,依此类推。
让我知道这是否适合您。
如果您的工作簿中存在循环引用,则可能会导致此问题。检查“公式”>“错误检查”下拉列表,并查看工作簿其他位置是否存在循环引用。删除它们后,VLOOKUP 应该恢复其行为