【问题标题】:Vlookup formula is causing an error for certain cellsVlookup 公式导致某些单元格出错
【发布时间】:2019-08-16 02:20:13
【问题描述】:

我有下面的vlookup 公式。我使用Vlookup,因为工作表中的范围可以移动和更改。由于某种原因,“错误”将显示为带有公式的某些单元格。当我进入公式(对于显示错误的单元格)时,除了括号和单元格引用之外的所有内容都会消失。

(((A49,$A49:$AH212,34, ) ((A49,$AN51:$AR531,5, )))  ((A49,$A49:$AH212,34, )))
=IFERROR((VLOOKUP(A49,$A49:$AH212,34,FALSE)-(VLOOKUP(A49,$AN51:$AR531,5,FALSE)))/(VLOOKUP(A49,$A49:$AH212,34,FALSE)),"error")

这很麻烦,因为vlookup 公式适用于大多数单元格。我确实有很多宏和数据透视表。我认为这可能会对它产生影响,但我不确定。

【问题讨论】:

  • 在 3 个不同的单元格中尝试这 3 个 vlookup。看看他们返回了什么
  • 听起来像是显示故障。您使用的是哪个版本的 Excel?在任何情况下,尝试将 3 个查找放在单独的(隐藏的?)辅助列中; =IFERROR((AA49-AB49)/AC49, "error") 更容易调试 ;-) ...这表示我会质疑使用“错误”字符串代替 Excel 和 VBA 代码可以理解的实际工作表错误的价值。魔术字符串值很少是个好主意。
  • 其实应该是=IFERROR((AA49-AB49)/AA49, "error"),或者更简单的=IFERROR(1-AB49/AA49, "error")

标签: excel vba formula


【解决方案1】:

当在查找表的最左侧列中找不到查找值时,VLOOKUP 会产生#N/A:确认查找值存在。注意格式化为文本的数字和前导/尾随空格 - 确保查找表中的预期匹配相同,并尽可能避免“格式化为文本”。

使用“公式”功能区选项卡中的“评估公式”按钮来诊断公式,或将其分解为辅助列:

[AA49]=VLOOKUP(A49,$A49:$AH212,34,FALSE)
[AB49]=VLOOKUP(A49,$AN51:$AR531,5,FALSE)

现在您的公式可以简化为=IFERROR(1-AB49/AA49,"error"),第二次查找不再需要为每一行计算两次。

看起来像“毛利率百分比”计算:(retail-cost)/retail,相当于retail/retail-cost/retail,即1-cost/retail

如果查找表的内容经常更改,请考虑使用INDEX+MATCH 而不是VLOOKUP,尤其是在您未使用 Office 365 构建的情况下; 任何查找表中 A 和 AH 之间(或 AN 和 AR 之间)的单元格更改将导致引用查找公式的重新计算;使用 INDEX+MATCH 不会发生这种情况(不过,最新的 Office 365 版本也不应该发生这种情况)。

【讨论】:

  • 感谢回复,我没有最近的office。你能帮我制作这个案例的索引+匹配吗?您需要更多信息吗?
  • @Tmacjoshua VLOOKUP(A49,$A49:$AH212,34,FALSE) 将变为INDEX($AH49:$AH212,MATCH(A49,$A49:$A212,0)),即index({where you pull the result from}, match({lookup value}, {where you find the lookup value}, 0))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 2022-11-02
  • 1970-01-01
相关资源
最近更新 更多