Эквивалент функции Excel NETWORKDAYS с Jet ADO

6978
Lunatik

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

3
это не может быть перемещено с наградой. извиняюсь. :( Jeff Atwood 14 лет назад 0
Я предлагаю спросить это на SO с более подробным объяснением - как, черт возьми, NETWORKDAYS делает? Jeff Atwood 14 лет назад 0
Ура, думал, щедрость может мешать вещам. Lunatik 14 лет назад 0
NETWORKDAYS - это функция из надстройки Analysis ToolPak. Возвращает количество рабочих дней между начальной и конечной датами. Это исключает выходные и любые даты, указанные в праздничные дни, которые вы должны указать в качестве аргумента. Сигнатура функции - NETWORKDAYS (дата начала, дата окончания, праздники) DaveParillo 14 лет назад 1

2 ответа на вопрос

5
JDunkerley

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

([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, и, кажется, дает правильный ответ

Отлично, это хорошо работает. Я пробовал подобные вещи, но увяз в логике. Та сильно :) Lunatik 14 лет назад 0
0
DaveParillo

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

Это будет работать с Access, где доступны пользовательские функции, но AFAIK это не будет работать через соединение ADO. Lunatik 14 лет назад 0
Согласовано. я думал, что пост был полезен, потому что это был тот же алгоритм, реализованный по-разному, то, что вы могли бы использовать для проверки и т. д. DaveParillo 14 лет назад 0
Извините, пришлось проголосовать вниз - ссылка приводит меня на сайт Google, который просит меня войти в систему. Darren Bartrup-Cook 6 лет назад 0

Похожие вопросы