Excel 中的 VLOOKUP 问题,#Value

Posted

技术标签:

【中文标题】Excel 中的 VLOOKUP 问题,#Value【英文标题】:Issues with VLOOKUP in Excel, #Value 【发布时间】:2012-06-25 19:23:11 【问题描述】:

我有 Excel 文件,其中数据会自动输入到不同的工作表中。我正在尝试开发一个新工作表来显示其他一些工作表中的一些重要信息。我完成了工作表上的大部分单元格,但有两个给我带来了一些问题。问题是我正在使用 VLOOKUPS/ISERROR 和 VLOOKUPS/ISERROR。我的问题是,当我们结合起来分离没有结果的答案时。我想知道当一个或两个 VLOOKUPS/ISERROR 语句为假时,是否有办法阻止它显示“#VALUE!”。

下面是我用于单元格的公式的副本,下面是我将收到的数据示例。

=IF(ISERROR(VLOOKUP(22, ChargingData!$B$31:$I$41,2, FALSE)),"",VLOOKUP(22, ChargingData!$B$31:$I$41,2, FALSE)/2000) + IF(ISERROR(VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE)),"",VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE)/2000)

=IF(ISERROR(VLOOKUP(23, ChargingData!$B$31:$I$41,2, FALSE)),"",VLOOKUP(23, ChargingData!$B$31:$I$41,2, FALSE)/2000) + IF(ISERROR(VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE)),"",VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE)/2000)

表格数据

33  65456            868931           654964             989872
23          65685    456331           6568     789911    65464
22          35468             84213   654987             633314

我想知道是否有人可以帮助我阻止表格显示“#VALUE!”信息。如果任何单元格中没有任何内容,我想显示“”而不是该消息,如果任何必要的单元格中有数据,则显示正确的信息。谢谢

【问题讨论】:

公式对我有用,我得到 32.768 作为答案,但我注意到第二个 VLOOKUP 的范围略有不同 我正在查看 vlookup 并注意到刚才,但这不是问题。 当一个 VLOOKUP 返回 "" 而另一个返回数字时会出现问题 - 您不能将 "" 添加到数字(您会收到 #VALUE! 错误)。您使用的是哪个版本的 Excel?您在这里与 VLOOKUP 结婚了吗?如果 22 和 23 在查找范围内最多只出现一次,那么 SUMIF 可能更可取......例如=SUM(SUMIF(ChargingData!$B$31:$B$41,22,23,ChargingData!$C$31:$C$41))/2000 ....哦,当然 ""+"" 也给你价值,如果你想坚持使用 VLOOKUP 尝试使用 0 而不是 "" 然后如果你不想看到结果格式单元格中的零以将零显示为空白[例如自定义格式General;;]。如果您使用 Excel 2007 或更高版本,请使用 IFERROR 函数缩短公式 【参考方案1】:

试试这个(我的括号可能有点偏):

=IF(Or(ISERROR(VLOOKUP(23, ChargingData!$B$31:$I$41,2, FALSE),ISERROR(VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE))),"",(VLOOKUP(23, ChargingData!$B$31:$I$41,2, FALSE)/2000) + (VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE)/2000)))

分解:

如果任一 vLookups 错误

=IF(Or(ISERROR(VLOOKUP(23, ChargingData!$B$31:$I$41,2, FALSE),ISERROR(VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE)))

返回空白

,"",

否则,返回第一个 Vlookup / 2000 + 第二个 Vlookup / 2000

(VLOOKUP(23, ChargingData!$B$31:$I$41,2, FALSE)/2000) + (VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE)/2000)))

【讨论】:

【参考方案2】:

我碰巧注意到有关数据如何进入的一些事情。不知何故,数据以字符串字符而不是通用字符的形式出现,因此 VLOOKUP 开头的“”。听取 Barry Houdini 的建议,如果 VLOOKUP 表为空/缺失,我将 VLOOKUP 的 return "" 替换为返回 0。如果返回 0,我添加了额外的 IF 语句以显示空白。

以下是我用于单元格的新功能:

=IF(IF(ISERROR(VLOOKUP("23", ChargingData!$B$31:$I$41,2, FALSE)),0,VLOOKUP("23", ChargingData!$B$31:$I$41,2, FALSE)/2000)+ IF(ISERROR(VLOOKUP("33", ChargingData!$B$31:$I$41,2, FALSE)),0,VLOOKUP("33", ChargingData!$B$31:$I$41,2, FALSE)/2000)0,IF(ISERROR(VLOOKUP("23", ChargingData!$B$31:$I$41,2, FALSE)),0,VLOOKUP("23", ChargingData!$B$31:$I$41,2, FALSE)/2000)+ IF(ISERROR(VLOOKUP("33", ChargingData!$B$31:$I$41,2, FALSE)),0,VLOOKUP("33", ChargingData!$B$31:$I$41,2, FALSE)/2000),"")

【讨论】:

【参考方案3】:

试试这个:

=numbervalue(ifna(VLOOKUP(23, ChargingData!$B$31:$I$41,2, FALSE),0))/2000+ 
 numbervalue(ifna(VLOOKUP(33, ChargingData!$B$31:$I$41,2, FALSE),0))

numbervalue() 将字符串更改为数字 ("" => 0) ifna()如果没有找到值,返回0

【讨论】:

以上是关于Excel 中的 VLOOKUP 问题,#Value的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL函数 vlookup如何在不同工作薄之间引用数据?

Access中VBA中excel文件中的VLookup

vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表

Excel中的LOOKUP函数是怎样应运的?

vlookup函数中的参数怎么修改?

python 用熊猫实现Excel中的VLOOKUP函数