IF 嵌套公式,显示“参数太多”错误信息

IF 嵌套公式,显示“参数太多”错误信息

给出以下公式:

=IF(D7="ACCOMMODATION","$220","",IF(D7="DINNER","$52.80","",IF(D7="LUNCH","$31.00","",IF(D7="BREAKFAST","$27.55","",IF(D7="INCIDENTALS","$19.70","")))))

D7单元格有一个下拉列表,目的是使选定的列表项与价格相对应。

例子:

  • D7已选择晚餐。E7将显示$52.80
  • D7已选择午餐。E7将显示$31.00

答案1

我已经更新了你的公式以摆脱多余的,""(220、52.80、31.00、27.55之后)

=IF(D7="ACCOMMODATION","$220",IF(D7="DINNER","$52.80",IF(D7="LUNCH","$31.00",IF(D7="BREAKFAST","$27.55",IF(D7="INCIDENTALS","$19.70","")))))

如果您想要实际的数字而不是看起来像数字的文本,请删除美元和美元符号周围的引号:

=IF(D7="ACCOMMODATION",220,IF(D7="DINNER",52.8,IF(D7="LUNCH",31,IF(D7="BREAKFAST",27.55,IF(D7="INCIDENTALS",19.7,"")))))

考虑学习这个=vlookup()公式,它会比你拥有的干净得多。

答案2

嵌套 IF 语句时,语法为

=IF(条件, 为真时执行, if(下一个条件, 为真时执行, 为假时执行))

您提供了“当 false 时执行”语句,然后提供了下一个 IF 语句。这不起作用。以下是清理后的公式:

=IF(D7="ACCOMMODATION","$220",IF(D7="DINNER","$52.80",IF(D7="LUNCH","$31.00",IF(D7="BREAKFAST","$27.55",IF(D7="INCIDENTALS","$19.70",""))))

注意 1:如果您想返回数字,请不要将它们放在双引号内,只需使用不带引号的数字并将单元格格式化为货币。

=IF(D7="ACCOMMODATION",220,IF(D7="DINNER",52.8,IF(D7="LUNCH",31,IF(D7="BREAKFAST",27.55,IF(D7="INCIDENTALS",19.7,"")))))

注 2:您可以设置一个表格,其中一列为单词,下一列为值,然后使用 Vlookup 查找值。这比嵌套的 IF 公式更容易维护

注 3:如果您使用具有 Office 365 许可证或 Excel 2019 的 Excel,则可以使用新的 IFS() 函数。此函数不需要任何嵌套。

=IFS(D7="ACCOMMODATION",220,D7="DINNER",52.8,D7="LUNCH",31,D7="BREAKFAST",27.55,D7="INCIDENTALS",19.7,TRUE,"")

答案3

其他答案解释了正确的使用方法IF ,并提到了VLOOKUP 使用嵌套函数的替代方法IF。正如 teylyn 提到的,VLOOKUP需要使用 2×5 数组来保存五个单词和五个数字。如果您的值可能会发生变化,或者列表可能会变得更大,那么这可能是一种好方法。

这是一个独立的公式,但采用了表查找的逻辑(即VLOOKUP):

=IFERROR(INDEX({220,52.8,31,27.55,19.7}, MATCH(D7,{"ACCOMMODATION","DINNER","LUNCH","BREAKFAST","INCIDENTALS"},0)), "")

MATCH(D7,{"ACCOMMODATION","DINNER","LUNCH","BREAKFAST","INCIDENTALS"},0)

部分检查是否D7是这五个单词之一,并返回 1、2、3、4 或 5 —#N/A如果是其他值,则返回错误。

索引({220,52.8,31,27.55,19.7},数字
如果 数字是 1、2、3、4 或 5。并且
=IFERROR(等等等等等等, “”)
如果公式返回错误(即,如果 D7不是五个单词之一),则返回空白。

相关内容