Как сделать красиво? switch

mrmaxim
Дата: 20.02.2016 12:45:44
Всем привет!
необходимо посчитать стоимость посылок через DHL.

Формат их таблицы следующий:

zone0,30кг0,50кг1,00кг 1,50кг2,00кг2,50кг3,00кг3,50кг4,00кг4,50кг5,00кг
A 284,26 284,26 426,39 491,00 555,60 594,37 633,13 671,89 710,66 749,42 788,18
B 284,26 335,95 426,39 491,00 555,60 607,29 658,97 710,66 762,34 814,02 865,71
C 297,18 361,79 452,24 516,84 581,45 633,13 684,81 736,50 788,18 839,87 891,55

в заголовках столбцов вес, первый столбец - зона (растояние A,B,C,D,..... )
В значениях указана стоимость доставки от 0,5 кг до 20 кг с шагом 0,5 кг ,
свыше 20кг до 50кг указана стоимость за 20 кг + фиксированное занчение за каждые 0,5 кг свыше 20.
аналогично от 50 до 70 и от 70 до 250.

Как это красиво сделать? switch отрабатывает только до 6.5 кг.

Возможно посчитать 5 тыс отправлений не прибегая к VBA?
Спасибо
Akina
Дата: 20.02.2016 12:58:18
Нормализуйте таблицу. Можно даже статическим запросом - она всё равно маленькая.
Predeclared
Дата: 20.02.2016 12:59:08
"Распивотить" таблицу имеется возможность?
mrmaxim
Дата: 20.02.2016 13:33:26
Akina,
Как нормализовать. Там все значения меняются не по линейном закону.
Добираться до компании приложу таблицу. Спасибо.
mrmaxim
Дата: 20.02.2016 13:35:11
Predeclared,
Та же проблема. Значения меняются нелинейно .

Чем распайвотиь? Power query?
Спасиб
ПЕНСИОНЕРКА
Дата: 20.02.2016 14:00:43
mrmaxim,

если
а=100км
в=500
с=1000

а у вас посылка 2,8кг на 300км --расчет через интерполяцию?
Predeclared
Дата: 20.02.2016 14:03:23
mrmaxim
... Та же проблема. Значения меняются нелинейно ...

Да без разницы, что нелинейно.
Описание алгоритма расчета имеется, "базовые" цифры тоже.

Если хотим считать 5 тысяч отправлений не прибегая к VBA,
то нужна "правильная" табличка.

Вот для наполнения ее данными на основе имеющейся таблички и алгоритма расчета,
я бы пользовал VBA.
Akina
Дата: 20.02.2016 14:23:21
mrmaxim
Как нормализовать.

Да элементарно. В таблицу вида

Zone (зона)
WeightFrom (диапазон веса - от)
WeightTo (диапазон веса - до)
BasePrice (стоимость веса для WeightFrom)
DeltaPrice (доп. стоимость за превышение на полкило)

Для начальных записей DeltaPrice =0, для больших весов больше нуля. По такой таблице легко считается стоимость на основании заданных зоны и веса.
Predeclared
Дата: 20.02.2016 14:36:28
Akina
... BasePrice (стоимость веса для WeightFrom)
DeltaPrice (доп. стоимость за превышение на полкило) ...

А почему не сразу Total (BasePrice+DeltaPrice)?
Akina
Дата: 20.02.2016 14:40:35
Predeclared
А почему не сразу Total (BasePrice+DeltaPrice)?

А что записывать в это поле для диапазонов
mrmaxim
свыше 20кг до 50кг указана стоимость за 20 кг + фиксированное занчение за каждые 0,5 кг свыше 20.
аналогично от 50 до 70 и от 70 до 250.

Или имеется в виду рассчитать для каждого веса с шагом в полкило? Ну и так можно...