Приветствую всех!
Снова мой неугомонный моск не дает мне покоя. Перечитал все доступные заголовки, не смог правильно сформулировать поисковый запрос поэтому рискнул создать новую тему. Имеется задача: вычислить значение исходя из множества параметров.
Пример:
Вычислить стоимость разгрузки груза. Груз может весить до 10 тонн и больше 10 тонн, может быть деревянный или железный, на паллетах или навалом, на колесах или не на колесах, в контейнере или не в контейнере и еще ряд параметров. на каждый вид груза и каждое сочетание имеется своя цена.
Я решил сделать функцию на VBA, которая будет перебирать все параметры IF-Else – ами и в зависимости от сочетания производить вычисления.
И еще, получается, что при моей логике у функции 24!!! аргумента. В целом это не большая проблема, но может кто-нить знает более изящное решение?
Снова мой неугомонный моск не дает мне покоя. Перечитал все доступные заголовки, не смог правильно сформулировать поисковый запрос поэтому рискнул создать новую тему. Имеется задача: вычислить значение исходя из множества параметров.
Пример:
Вычислить стоимость разгрузки груза. Груз может весить до 10 тонн и больше 10 тонн, может быть деревянный или железный, на паллетах или навалом, на колесах или не на колесах, в контейнере или не в контейнере и еще ряд параметров. на каждый вид груза и каждое сочетание имеется своя цена.
Я решил сделать функцию на VBA, которая будет перебирать все параметры IF-Else – ами и в зависимости от сочетания производить вычисления.
Код |
---|
Function LUW(Вес, ТипГруза, НаПаллете, Самоход, Контейнер, Ставка_дер_до10т, Ставка_дер_больше10т, Ставка_железный, Ставка_безпалета…. и там далее все аргументы и ставки) If ТипГруза = 1 Then ‘ как бы 1 – это деревянный. Если груз деревянный, ТО If НаПаллете = True Then ‘ проверяем на паллете он или нет, Если да, ТО If Вес <= 10 Then ‘ проверяем сколько весит. Если меньше 10 т, ТО LUW = Вес * Ставка_дер_до10т ‘соответствующая ставка умножается на вес Else: LUW = Вес * Ставка_дер_больше10т ‘ если больше 10 т, то другая ставка End If Else: LUW = Вес * Ставка_безпалета ‘ если деревянный груз без паллета End If Else: LUW = … ‘Если груз НЕ ДЕРЕВЯННЫЙ… Вот тут и ступор. Получается нужно обращаться опять к условию проверки «На_паллете» и я начинаю тупить… End If End Function |
Лишь стремясь к невозможному, можно достичь максимального.