4

Есть ли способ репликации ExcelWORKDAYS при подключении к базе данных Jet через ADO?

2 ответа2

5

Сначала предположим, что мы знаем, что начало и конец - будние дни, затем, я думаю, это работает:

([DateEnd]-([DateStart]+(Weekday([DateEnd])-Weekday([DateStart]))))/7*5+(Weekday([DateEnd])-Weekday([DateStart]))+1
  • отработать количество недель между датой и временем на 5.
  • добавить разницу дня недели
  • добавить один, чтобы включить начало и конец

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

([DateEnd]-([DateStart]+(Weekday([DateEnd])-Weekday([DateStart]))))/7*5+(Weekday([DateEnd])-Weekday([DateStart]))+1+IIf(Weekday([DateEnd])=7,-1,0)+IIf(Weekday([DateStart])=1,-1,0)

Я проверил его в Excel, и, кажется, дает правильный ответ

0

Там также есть эта функция. Это алгоритмически почти идентично @ JDunkerley's - просто более многословно. Возможно, проще реализовать в разных средах.

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