2

У меня есть ситуация, когда мне нужно рассчитать стоимость доставки на основе длины цепочки поставок. Легко, однако мне нужно иметь случаи, когда требуется увеличение суммы на основе конкретных критериев даты.

Мой пример выглядит следующим образом:

  • Shipvalue = 100
  • Date1 = 01.01.2013 (январь) - доставка на 50% больше, чем обычно
  • Date2 = 01.02.2013 (февраль) - отправка на 25% больше, чем обычно
  • Date3 = 01.03.2013 (март) - отправка на 25% больше, чем обычно

    Supply chain length составляет:

  • Июнь - октябрь 100 дней
  • Ноябрь - март 140 дней
  • Апрель - июнь 100 дней

У меня проблема в том, что, поскольку количество дней увеличивается, моя формула:

IF( Date1-(Supply chain length + any extra days)=today's date,
    shipvalue+(shipvalue X 50%),
   IF( Date2-(Supply chain length + any extra days)=today's date,
       shipvalue+(shipvalue x 50%)
      IF( Date2-(Supply chain length + any extra days)=today's date,
           shipvalue+(shipvalue x 50%),
          IF( preceding cell<>0,shipvalue,
             0)
         )
      )
  )

Теперь проблема в том, что если длина цепочки поставок увеличивается, то формула пропускает все, кроме 1-го увеличения. Итак, я подумал о добавлении переменной, которая будет увеличиваться и проверяться каждый раз, когда вы увеличиваете сумму доставки.

Итак, как мне сделать как вычисление для увеличенной стоимости доставки, так и установить переменную в одной части инструкции IF?

1 ответ1

1

Вам нужно изучить написание оператора Select Case в VBA на ленте разработчика. На данный момент у вас есть 4 оператора if, которые пытаются работать друг на друге, и, как вы обнаруживаете, это только приводит к проблемам. Если вы начнете писать этот код в VBA, у вас будет достаточно возможностей для написания кода, чтобы выполнить то, что вы хотите.

Private Function shippingvalue()
Select Case cell.value
    Case Date1-(Supply chain length + any extra days)
        today's date,shipvalue+(shipvalue X 50%)
    Case your next case
        your next assigned value
End Select
End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .