2015-04-03 61 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))))