2016-09-20 144 views
1

我是VBA的新手,目前正在使用它來創建一個使用三個條件來吐出計算結果的函數。三個輸入單元格包括一個數字值(「排放量」)和兩個文本值(「氣體」和「單位」,它們都具有從下拉菜單中選擇的值。Excel VBA帶多個條件和下拉列表的if/elseif函數

我基本上想創建一個功能,該功能根據從下拉菜單中選擇的值計算結果。例如,如果下拉B(「gas」)列出某個值並且下拉C「units」列出某種類型的單位測量值,我想用在A列的數量來計算終值以下是我已經開始至今(三個污染物類型之一)發展。

Function CO2EquivalentEmissions(emissionsquantity As Double, gas As String, units As String) 
    If (gas = "CH4" Or "ch4") And units = "tons" Then 
     CO2EquivalentEmissions = emissionsquantity * 25 
    ElseIf (gas = "CH4" Or "ch4") And units = "lbs" Then 
     CO2EquivalentEmissions = (emissionsquantity/2000) * 25 
    ElseIf (gas = "CH4" Or "ch4") And units = "tonnes" Then 
     CO2EquivalentEmissions = (emissionsquantity * 1.10231) * 25 
End If 
End Function 

使用此功能,但是,我得到0.00的結果,而不管我使用「emis」的值sionsquantity」。有什麼建議?非常感謝!

+0

嘗試在我的回答如下 –

回答

2

你感到困惑如何測試字符串一點,你放錯地方的"的位置,請參見下面的代碼:

Function CO2EquivalentEmissions(emissionsquantity As Double, gas As String, units As String) 

If gas = "CH4" And units = "tons" Then 
    CO2EquivalentEmissions = emissionsquantity * 25 
ElseIf gas = "CH4" And units = "lbs" Then 
    CO2EquivalentEmissions = (emissionsquantity/2000) * 25 
ElseIf gas = "CH4" And units = "tonnes" Then 
    CO2EquivalentEmissions = (emissionsquantity * 1.10231) * 25 
End If 

End Function 

編輯1:與更新修正Function(包括Or氣體標準)

Function CO2EquivalentEmissions(emissionsquantity As Double, gas As String, units As String) 

If (gas = "CH4" Or gas = "ch4") And units = "tons" Then 
    CO2EquivalentEmissions = emissionsquantity * 25 
ElseIf (gas = "CH4" Or gas = "ch4") And units = "lbs" Then 
    CO2EquivalentEmissions = (emissionsquantity/2000) * 25 
ElseIf (gas = "CH4" Or gas = "ch4") And units = "tonnes" Then 
    CO2EquivalentEmissions = (emissionsquantity * 1.10231) * 25 
End If 

End Function 
+0

感謝,夏嘉曦的代碼。是的,這是我的疏忽。我稍微調整了我的代碼,並且還添加了括號以允許CH4的小寫字母和首字母拼寫,但我現在正在獲得#VALUE! Excel中出錯。有任何想法嗎?我發佈了上面的修改後的代碼。 – user6851629

+0

@ user6851629你使用'Or'的語法不正確。看到我編輯的代碼 –

1

OR條件中存在一個小錯誤。做這一點:

Function CO2EquivalentEmissions(emissionsquantity As Double, gas As String, units As String) 
If (gas = "CH4" Or gas = "ch4") And units = "tons" Then 
    CO2EquivalentEmissions = emissionsquantity * 25 
ElseIf (gas = "CH4" Or gas = "ch4") And units = "lbs" Then 
    CO2EquivalentEmissions = (emissionsquantity/2000) * 25 
ElseIf (gas = "CH4" Or gas = "ch4") And units = "tonnes" Then 
    CO2EquivalentEmissions = (emissionsquantity * 1.10231) * 25 
End If 
End Function 

或者包括選項比較文本,這將使所有的「文本比較」區分大小寫的,所以你可以只需單次檢查,並會爲CH4,CH4等:

Option Compare Text 
Function CO2EquivalentEmissions(emissionsquantity As Double, gas As String, units As String) 

If (gas = "ch4") And units = "tons" Then 
    CO2EquivalentEmissions = emissionsquantity * 25 
ElseIf (gas = "ch4") And units = "lbs" Then 
    CO2EquivalentEmissions = (emissionsquantity/2000) * 25 
ElseIf (gas = "ch4") And units = "tonnes" Then 
    CO2EquivalentEmissions = (emissionsquantity * 1.10231) * 25 
工作

結束如果 端功能