Получить «start_date» из функции Excel ЧИСТРАБДНИ

NETWORKDAYS (start_date, end_date, [holidays])

Если мы уже знаем значение NETWORKDAYS, end_date и [праздники], можно ли вместо этого получить start_date?

Пример:

NETWORKDAYS: 5 
end_date: 1/1
Holidays: 12,30,12/31

Можно ли автоматически получить start_date?

Да. Используйте функцию WORKDAY.

Ron Rosenfeld 17.12.2020 04:50

@LifeOfJona, спасибо за помощь! Я недостаточно ясно выразился... Я не пытаюсь получить "дату" без месяца. Я хочу получить "start_date" в качестве результата.

dolib 17.12.2020 06:45

@Ron Rosenfeld Почему я не использую «Рабочие дни», потому что хочу отсчитывать дату в обратном порядке. Я знаю крайний срок (end_date), но функция Workdays может рассчитать его только вперед (используя start_date в качестве базы для добавления рабочих дней). Но в любом случае, спасибо за комментарий!

dolib 17.12.2020 06:45

Насколько я знаю, для этого нужно использовать VBA. Смотрите мой ответ ниже.

Andreas 17.12.2020 09:38

Не правда. WORKDAY может рассчитывать вперед или назад. Вы пробовали?

Ron Rosenfeld 17.12.2020 11:28

@Ron Rosenfeld omg... Orzzzzz, я добавил "минус" перед рабочими днями.... и это работает, спасибо!

dolib 17.12.2020 11:53

Я разместил это как ответ, чтобы продемонстрировать после того, как вы прокомментировали обратный отсчет. Если это то, чего вы хотите, вы можете принять это.

Ron Rosenfeld 17.12.2020 11:58
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
7
130
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я считаю, что вы ищете что-то вроде этого:

Это делается с использованием 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, и я не могу заставить ее работать должным образом...

dolib 17.12.2020 11:39
Ответ принят как подходящий

Вы можете просто использовать функцию РАБДЕНЬ.

Поскольку NETWORKDAYS включает даты начала и окончания, а WORKDAY является дополнением, вам нужно добавить 1 к отрицательному значению сетевых дней.

например: =WORKDAY(B9,-B8+1,B10:C10)

Другие вопросы по теме