【问题标题】:Issue with VLOOKUP when using a named range table使用命名范围表时出现 VLOOKUP 问题
【发布时间】:2018-05-31 18:27:25
【问题描述】:

我在让 Excel 识别我的 VLOOKUP 公式中的表格时遇到问题。这是我试图根据下拉列表中的选择来显示当前数量的公式。

=IFERROR(VLOOKUP(K7,inventory,3,0),"")

K7 是我创建的下拉列表,引用了我的表格“库存”。我已将我的表命名为“库存”,并尝试将我的表转换回范围并重新列出具有相同错误的数据。当我取出公式的 IFERROR("") 部分时,我得到一个 #N/A 错误。我的表格上也有条件格式,可以突出显示/加粗满足特定条件的行(列值大于另一个列值)。该表与下拉列表位于同一工作表中。我的工作簿中目前没有任何 VBA 代码或项目。

最终我想要做的是使用下拉列表获取表中的当前值,并通过添加或减去用户指定的数字来更改该值。

Context Image

【问题讨论】:

  • Vlookup 使用提供的范围/表中的第一列进行查找。您正在尝试查找Chromebook(G3),这显然在第二列中。将inventory 更改为C:F,以便查找正确的列或重新排列表格以将描述作为第一个字段。
  • 谢谢@JNevill,这说明了为什么 VLOOKUP 不起作用。我不知道Vlookup。我还没有时间做出任何改变,但我一回家就会!我对 Index/Match 函数而不是 Vlookup 真的很感兴趣,因为它似乎提供了更多功能。我一定只是浏览了第一栏的内容。谢谢!

标签: excel excel-formula vlookup excel-tables


【解决方案1】:

如果您想使用结构化表引用,请放弃 VLOOKUP 并改用 INDEX/MATCH 函数对。这将允许您更好地控制用于查找的列以及用于检索的列。无需将公式包装在 IFERROR 中,因为正确配置的下拉列表应该始终返回一个值。

=index(inventory[qty], match(K6, inventory[description], 0))

很简单,在描述列中查找匹配项,然后从相应的数量列中返回值。

【讨论】:

  • 我一回到家就准备测试一下。谢谢!
【解决方案2】:

您需要修改方程式,因为您的表数组需要从查找值开始的位置开始(如果您使用的是 VLOOKUP。上面还有另一个同样有效的解决方案,它使用 INDEX/MATCH 函数)。
您对这些函数有更多的控制权,并且可以参考您的表格,但缺点是这些方程式对于不太注重 excel 的用户来说并不直观。您遇到了 VLOOKUP 的缺点,但对于普通的 excel 用户来说,它更容易阅读和理解。 (道德是两者都有+ / -)

=VLOOKUP(K7, C:E, 3, 0)

上面的等式将找到您的查找值(K7)并在 E 列中返回相应的值。如果您需要 F 列中的相应值,您可以按如下方式调整等式:

=VLOOKUP(K7, C:F, 4, 0)

【讨论】:

    【解决方案3】:

    如果您的表称为“库存”,并且您希望“数量”列中的值基于 K7 中的值,请尝试以下公式。

    =iferror(vlookup(k7,inventory[[#All],[Description]:[QTY]],3,false),"")
    

    【讨论】:

    • 您将无法使用 vlookup 来匹配结构化表格第二列中的值。
    • 是的,你是对的!我忽略了我的公式。试试,=iferror(vlookup(k7,inventory[[#All],[Description]:[QTY]],3,false)"")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 2020-01-17
    • 2021-09-24
    • 2012-10-07
    相关资源
    最近更新 更多