繁体   English   中英

Excel VBA if / elseif函数具有多个条件和下拉列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM