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