Excel Разница в датах без выходных - PullRequest
0 голосов
/ 31 августа 2018

В прошлый раз я опубликовал довольно расплывчатую историю о проблеме разницы в датах, которую я еще не решил. Я попытаюсь уточнить, так как я попробовал все, что в моих силах, и проблема все еще не решена.

У меня сейчас три столбца.

  • Столбец 1 (F)
    • дата начала ремонта автомобиля (формат DayOfWeek-DD-MM-YYYY)
  • Столбец 2 (G)
    • количество дней, в течение которых автомобиль ремонтируется (соглашение об уровне обслуживания [SLA]; стандарт составляет 10 дней)
  • Столбец 3 (H)
    • вывод, который является датой, когда автомобиль должен быть закончен. Итак, количество дней после начальной даты *

* Что делает этот случай трудным, так это то, что включены только рабочие дни .

Так, например:

Если автомобиль начинает ремонт в Понедельник 1 ST августа , дата окончания это вторник 14 th августа .

Я попытался решить эту проблему с помощью следующей формулы:

=IF(WEEKDAY(F218)=2;(F218+11);
IF(WEEKDAY(F218)=3;F218+12;
IF(WEEKDAY(F218)=4;F218+13;
IF(WEEKDAY(F218)=5;F218+14;
IF(WEEKDAY(F218)=6;F218+15)))))

Другими словами:
Если startdate = Monday, тогда startdate + 11,
если начальная дата = вторник, то начальная дата + 12 и т. д.

Это работает, , но У меня более 300 строк, и перетаскивание этой функции не меняет ссылки на ячейки.

Я знаю о функциях NETWORKDAYS и WEEKDAY, но у меня возникают проблемы с любым понедельником, когда проходят только 1 выходные и другие дни, когда 2 проходят выходные.

1 Ответ

0 голосов
/ 01 сентября 2018

Прежде всего, я предполагаю, что ваш первый день - какой бы день это ни был - считается первым (1). Так что в моем сценарии, если SLA указывает 2 дня для завершения ремонта и дата начала равна понедельник , я предполагаю, что ремонт должен быть завершен к вторнику .

Мое предположение основано на этом комментарии @RonRosenfeld:

... хотя вам, возможно, придется вычесть 1 из числа дней


Учитывая все сказанное, попробуйте эту формулу в своей ячейке:
& emsp; ПРИМЕЧАНИЕ. Возможно, вам придется изменить такие параметры, как запятые и точки с запятой, чтобы настроить их для своего региона.

=WORKDAY($F2,$G2-1)+LOOKUP(WEEKDAY(WORKDAY($F2,$G2-1),16),{1;2;3},{2;1;0})

Что он делает:

  • WORKDAY($F2,$G2-1)
    • Сначала мы хотим точно узнать, в какой день ремонтные работы должны быть завершены, если будут включены выходные дни (суббота и воскресенье). Эта часть формулы просто даст нам место для начала.
    • $F2 дата начала ремонта
    • $G2 - это количество дней, которое должен занять ремонт (вам может потребоваться добавить столбец для этого, потому что, как вы заявили, SLA может измениться, и вам нужно, чтобы формула была легко скорректирована)
  • WEEKDAY(WORKDAY($F2,$G2-1),16)
    • Функция WORKDAY сверху находится внутри функции WEEKDAY. Эта функция WEEKDAY написана для учета каждого дня недели, которому будут присвоены номера. Параметр [return_type], равный 16, указывает Excel пометить их как «Числа от 1 (суббота) до 7 (пятница)» . Мы выбрали 16, чтобы нашу функцию LOOKUP было легче писать. Эта часть формулы возвращает только однозначное число, которое, в свою очередь, будет использоваться для определения того, какой день недели мы действительно хотим , если исключить выходные.
  • LOOKUP(WEEKDAY(WORKDAY($F2,$G2-1),16),{1;2;3},{2;1;0})
    • Мы заканчиваем формулу добавлением результата из функции LOOKUP, используя первую форму функции:
      LOOKUP(lookup_value,lookup_vector,[result_vector])
    • Мы нашли наш lookup_value в предыдущем пункте с помощью функции WEEKDAY. Теперь мы хотим, чтобы Excel использовал lookup_vector - {1;2;3} в нашей формуле - чтобы найти правильное значение, добавляемое к первой части нашей формулы (которое находится с помощью [result_vector] - {2;1;0} в нашей формуле).
    • lookup_vector имеет только три значения: 1, 2 и 3.
    • 1 сигнал суббота
    • 2 сигнала, воскресенье
    • 3 сигнала все остальные дни
  • Думайте о lookup_vector и [result_vector] как о формировании матрицы / таблицы, из которой найдено наше значение:
    • 1 & emsp; 2
    • 2 & emsp; 1
    • 3 & emsp; 0
  • Если наше количество дней ремонта подталкивает нас к:
    • в субботу (1), формула добавляет 2.
    • воскресенье (2), формула добавляет 1.
    • любой день недели , формула добавляет 0 (поскольку рабочие дни допустимы).

Надеюсь, все это имеет смысл. Желаем удачи!

...