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

我是VBA新手,目前正在使用它来创build一个函数,使用三个标准来吐出计算结果。 三个input单元格包括一个数值(“排放量”)和两个文本值(“气体”和“单位”,它们都具有从下拉菜单中select的值。

我基本上想创build一个函数,根据从下拉菜单中select的值来计算结果。 例如,如果下拉B(“gas”)列出某个值,下拉C“units”列出某种types的单位测量,我想使用列A中的数量计算最终值。 以下是我已经开始发展到目前为止(三种污染物types之一):

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的结果,而不pipe我用什么值为“排放量”。 有什么build议? 非常感谢!

你弄糊涂了怎么testing一下这个string,你错位了" ,看下面的代码:

 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 

结束如果结束function