2016-09-20 142 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 
工作

结束如果 端功能