给出以下公式:
=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
不是五个单词之一),则返回空白。