У нас есть бизнес-процесс, который требует от нас расчета

(TODAY + 8 weeks) to the nearest Sunday or Wednesday.

Например
- Сегодня 07/12.
- 8 недель 01/02/18
- Это четверг. Посчитайте до ближайшей среды или воскресенья в прошлом [1]. Посчитайте до ближайшей среды или воскресенья в будущем [3]
- Выберите день с наименьшим количеством прыжков между расчетной датой. Поэтому выбираем среду 31/01/18
- Если это пятница и есть ничья (-2 до среды, +2 до воскресенья), выберите воскресенье.

Я доволен Excel до точки =TODAY()+(8*7) но следующий шаг к « is this a Wednesday or Sunday, if not count forward and back until it is both then compare the two values and select the closest намного выше меня. Я предполагаю, что ему нужен некоторый VB, но это не то, с чем я знаком (хотя я мог бы сделать это в PowerShell, однако, я не неспособен просто незнакомый).

Кто-нибудь может заставить меня начать?

В конечном итоге я хотел бы включить результаты в документ Word, но это может произойти позже.

2 ответа2

4

Поскольку вы никогда не хотите возвращаться более чем на один день (из 56 первоначально добавленных) [1], было бы достаточно сложить 56, вычесть 2 и затем найти следующее вхождение в среду или воскресенье.

Вы можете сделать это с помощью функции WORKDAY.INTL (Excel 2010 или более поздней версии ) следующим образом:

=WORKDAY.INTL(TODAY()+8*7-2,1,"1101110")

WORKDAY.INTL может быть настроен для определения "рабочих дней" с помощью строки типа "1101110" - строка имеет значения 7 1/0 начиная с понедельника и заканчивая воскресеньем, где 0 представляет рабочий день, а 1 - нерабочий день "1101110" определяет среду и воскресенье как единственные рабочие дни.

В старых версиях Excel вы можете получить тот же результат с этой формулой

=MIN(TODAY()+8*7+6-WEEKDAY(TODAY()+8*7-{2,5}))


[1] Объяснение: до ближайшего воскресенья или среды никогда не может быть более двух дней в любом направлении, и когда дата +56 = пятница Патрик говорит, что он хочет выбрать воскресенье ..... поэтому, если дата +56 - четверг или В понедельник вам нужно вернуться назад на 1, в любой другой ситуации вы либо сохраняете дату +56, либо идете вперед.

2

Как это работает для вас? Следует рассчитать ближайшее воскресенье или среду 8 недель в будущем.

Чтобы убедиться, что это работает, поместите дату в A2. Вы можете изменить свою ссылку с A2 на Today() после того, как убедитесь, что она работает.

Поместите эту формулу в B2:

=(A2+(8*7)) - CHOOSE(WEEKDAY(A2+(8*7)),0,1,-1,0,1,-2,-1)

Поместите эту формулу в C2, чтобы проверить результаты:

=TEXT(B2,"DDD")

Чтобы проверить это, поместите свои даты в A2 и проверьте свой календарь.
Если ваш будний день не начинается в воскресенье, вы можете отрегулировать 4 в проверке условий IF() .

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