String 带多个条件和下拉列表的Excel VBA if/elseif函数

String 带多个条件和下拉列表的Excel VBA if/elseif函数,string,vba,excel,function,String,Vba,Excel,Function,我是VBA新手,目前正在使用它创建一个函数,该函数使用三个条件来输出计算结果。这三个输入单元格包括一个数值(“emissionsquantity”)和两个文本值(“gas”和“units”),它们都具有从下拉菜单中选择的值 我基本上想创建一个函数,根据从下拉菜单中选择的值计算结果。例如,如果下拉菜单B(“气体”)列出某个值,下拉菜单C“单位”列出了某种类型的单位测量,我想使用a列中的数量来计算最终值。以下是我迄今为止开始开发的内容(针对三种污染物类型之一): 但是,使用此函数,无论我使用哪个值表

我是VBA新手,目前正在使用它创建一个函数,该函数使用三个条件来输出计算结果。这三个输入单元格包括一个数值(“emissionsquantity”)和两个文本值(“gas”和“units”),它们都具有从下拉菜单中选择的值

我基本上想创建一个函数,根据从下拉菜单中选择的值计算结果。例如,如果下拉菜单B(“气体”)列出某个值,下拉菜单C“单位”列出了某种类型的单位测量,我想使用a列中的数量来计算最终值。以下是我迄今为止开始开发的内容(针对三种污染物类型之一):


但是,使用此函数,无论我使用哪个值表示“emissionsquantity”,结果都是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 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
如果结束
End Function

试试下面答案中的代码Hanks,Shai。是的,这是我的疏忽。我对代码做了一些调整,还添加了括号以允许CH4的小写和大写拼写,但我现在在Excel中得到了#VALUE!错误。有什么想法吗?我在上面发布了修改后的代码。@user6851629您使用
或的语法是什么不正确。请参阅我编辑的代码
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
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