[英]Excel VBA if/elseif function with multiple conditions and dropdowns
我是VBA的新手,目前正在使用它来创建一个使用三个标准来吐出计算结果的函数。 三个输入单元格包括一个数值(“emissionquantity”)和两个文本值(“gas”和“units”,两者都具有从下拉菜单中选择的值。
我基本上想要创建一个函数,根据从下拉菜单中选择的值计算结果。 例如,如果下拉B(“气体”)列出某个值并且下拉C“单位”列出某种类型的单位测量,我想使用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
但是,使用此函数,无论使用哪个值“emissionquantity”,我都得到0.00的结果。 有什么建议? 非常感谢!
你混淆了如何测试字符串,你错放了位置"
,请参阅下面的代码:
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
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
结束如果结束功能
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.