2015-04-03 21 views
2

我在Excel中根据工程师的规定创建IF语句。我想:带有各种文本条件的嵌套IF语句

IF(H5="CIVIL") then print for me value (I5*5000) 
IF(H5="ARCHITECT") then print for me value (I5*3000) 
IF(H5="ELECTRIC") then print for me value (I5*3000) 
IF(H5="MECHANIC") then print for me value (I5*2000) 

我使用嵌套的IF语句:

=IF(H5="CIVIL",I5,I5*5000,IF(H5="ARCHITECT",I5,I5*3000,IF(H5="ELECTRIC",I5,I5*3000,IF(H5="MECHANIC",I5,I5*2000)))) 

,但我看到消息“您所输入的参数太多了这一功能。”

如何使用该公式没有任何问题?

+0

试试这个 = IF(H5 = “民法”,I5 * 33000,IF(H5 = “建筑师”,I5 * 16000,IF(H5 = “ELECTRIC”,I5 * 12000,IF(H5 =“MECHANIC”,I5 * 10000)))) – Andy 2015-04-03 11:44:42

+0

在以前的时间我用这种方式但不工作我的功能是正确的。当我仅使用CIVIL,ARCHITECT,ELECTRIC和MECHANIC时,它是工作,但是当我使用两条语句不起作用时 – 2015-04-03 11:48:20

+0

嵌套IF的逻辑在您使用的任何语言中都保持不变 IF(condition1,value1,IF(condition2,value2)) – Andy 2015-04-03 11:51:08

回答

2

请尝试:

=IF(H5="CIVIL",5000,IF(OR(H5="ARCHITECT",H5="ELECTRIC"),3000,2000))*I5 
+0

不显示我的错误信息,但当我使用CIVIL或ARCHITECT或电文每次多个I5单元到2000年,而不是多个5000年的民事和3000年的建筑师 – 2015-04-03 12:02:14

+1

请检查什么是在H5恰恰是其中一个字符串在公式中(例如,通过在双引号之间的内容的副本覆盖H5来检查隐藏空间)。从公式中选择并复制'CIVIL'(不含引号),并将其粘贴到H5中。 – pnuts 2015-04-03 12:05:04

+1

谢谢你没有任何proplem – 2015-04-03 12:10:23

1

将会有更多的专业人士提供更多价值,所以“单式”的做法是第二个最好的。您应该使用具有专业和价值的表格,并使用VLOOKUP,然后您可以根据需要更改值和添加专业职位,而无需更新意大利式公式代码。

 A  B 
1 Civil 5000 
2 Arch  3000 
3 Elec  3000 
4 Mech  2000 

H5指定的职业,你会使用I5以下公式:

=VLOOKUP(H5,A1:B4,2,FALSE) 

看你的编辑......多一个理由不隐藏公式中的单位成本,因为在2016年,费率可能会有所不同 - >使用表格!

+0

请帮助我我不明白你的解释 – 2015-04-03 12:05:33

+1

虽然没有OP问我同意一个好主意,但OP的公式包括一个乘数(在你为你的公式建议的单元格中) Arch'与您的公式'ARCHITECT'不一样。另外OP的分隔符是','。 – pnuts 2015-04-03 12:12:55

+0

好吧......我只是用Arch缩写为ARCHITECT ...使用任何......当然,如果您必须将基于H5中职业的VLOOKUP的速率乘以-say-I5中指定的小时数',你会说'= I5 * VLOOKUP(H5,...)'......这里的信息实际上是使用表**一次**来指定**一个**位置的速率,然后使用VLOOKUP检索该表的值,而不是将重要值硬编码到公式中。 – MikeD 2015-04-03 15:32:42

0

您可以随时在文本编辑器中打开公式并检查它。我使用换行来分隔参数。如果你不像我那样评论,你甚至可以重新实现现在格式化的公式。为我节省了很多次。
另外,我发现你的公式的沉寂:

=IF(
H5="CIVIL", 'test 
I5,   'If True 
I5*5000,  'If False 
IF(   'WAT 
H5="ARCHITECT", 
I5,I5*3000,IF(H5="ELECTRIC",I5,I5*3000,IF(H5="MECHANIC",I5,I5*2000))))