NETWORKDAYS (start_date, end_date, [holidays])
Если мы уже знаем значение NETWORKDAYS, end_date и [праздники], можно ли вместо этого получить start_date?
Пример:
NETWORKDAYS: 5
end_date: 1/1
Holidays: 12,30,12/31
Можно ли автоматически получить start_date?
@LifeOfJona, спасибо за помощь! Я недостаточно ясно выразился... Я не пытаюсь получить "дату" без месяца. Я хочу получить "start_date" в качестве результата.
@Ron Rosenfeld Почему я не использую «Рабочие дни», потому что хочу отсчитывать дату в обратном порядке. Я знаю крайний срок (end_date), но функция Workdays может рассчитать его только вперед (используя start_date в качестве базы для добавления рабочих дней). Но в любом случае, спасибо за комментарий!
Насколько я знаю, для этого нужно использовать VBA. Смотрите мой ответ ниже.
Не правда. WORKDAY
может рассчитывать вперед или назад. Вы пробовали?
@Ron Rosenfeld omg... Orzzzzz, я добавил "минус" перед рабочими днями.... и это работает, спасибо!
Я разместил это как ответ, чтобы продемонстрировать после того, как вы прокомментировали обратный отсчет. Если это то, чего вы хотите, вы можете принять это.
Я считаю, что вы ищете что-то вроде этого:
Это делается с использованием UDF (код VBA в формуле).
Откройте редактор VBA (ALT + F11)
Добавить новый модуль
Вставьте следующий код:
Function countdays(EndDate As Date, Days As Integer)
i = 1
While Application.WorksheetFunction.NetworkDays(EndDate - i, EndDate) < Days
i = i + 1
Wend
countdays = EndDate - i
End Function
Сохраните книгу как книгу с поддержкой макросов. XLSM или XLSB
Это будет зацикливать начальную дату до тех пор, пока NetworkDays не вернет правильное количество дней, а затем вернет эту дату в ячейке.
Большое спасибо! Это именно то, что я хочу! Но есть еще одна вещь, на которой я все еще застрял... Я хочу сохранить [Праздники] из старой функции, однако я новичок в VBA, и я не могу заставить ее работать должным образом...
Вы можете просто использовать функцию РАБДЕНЬ.
Поскольку NETWORKDAYS
включает даты начала и окончания, а WORKDAY
является дополнением, вам нужно добавить 1
к отрицательному значению сетевых дней.
например: =WORKDAY(B9,-B8+1,B10:C10)
Да. Используйте функцию
WORKDAY
.