2016-09-20 1 views
1

Я новичок в VBA и в настоящее время использую его для создания функции, которая использует три критерия для вычеркивания вычисленного результата. Три входные ячейки включают в себя одно числовое значение («эмиссионный коэффициент») и два текстовых значения («газ» и «единицы измерения», оба из которых имеют значения, которые выбраны из раскрывающихся меню.Excel VBA if/elseif функция с несколькими условиями и выпадающими списками

Я в основном хочу создать функция, которая вычисляет результат на основе значений, выбранных из раскрывающихся меню. Например, если в раскрывающемся списке B («газ») указано определенное значение, а выпадающие единицы «C» перечисляют определенный тип измерения единицы измерения, Я хочу использовать количество в колонке А для вычисления конечного значения Вот то, что я начал развиваться до сих пор (по одному из трех типов вредных веществ):.

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, независимо от того, какое значение я использую для «emis sionsquantity». Любой совет? Спасибо!

+0

попробуйте код в моем ответе ниже –

ответ

2

Вы путать, как проверить строку немного, вы неуместны позицию " см ниже код:

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 

Edit 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 
+0

Спасибо, Шай. Да, это был надзор с моей стороны. Я немного изменил свой код, а также добавил круглые скобки, позволяющие писать как строчные, так и календарные записи CH4, но теперь я получаю #VALUE! ошибка в Excel. Есть идеи? Я опубликовал пересмотренный код выше. – user6851629

+0

@ user6851629 Ваш синтаксис использования 'Or' неверен. Просмотреть мой отредактированный код –

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 

Или включить опцию сравнивать текст, это будет делать все «текстовые сравнения» регистр букв не учитывается, так что вы можете просто иметь единый чек и что будет работать для СН4, СН4 и др .:

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 

Конец Если Конечная функция

Смежные вопросы