Страница: 1 |
Вопрос: Как определить кол-во субботних дней в текущем мес | Добавлено: 10.10.06 15:40 |
Автор вопроса: ![]() |
Как с помощью средств ВБА подсчитать
1. кол-во суббот в месяце? 2. выхоных дней: (суббота + воскрксенье)? или рабочих дней (с исключением субботы и воскресенья)? Я такой функции в ВБА не нашел. С уважением macho |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ICQ: 354-671-214 Вопросов: 18 Ответов: 103 |
Профиль | Цитата | #1 | Добавлено: 10.10.06 16:48 |
А может тебе функцию, которая будет кофе приносить? А по выходным еще и пиво?
Это делается ручками: Есть такая функция WeekDay(Date), которая возвращает число от 0 до 6 - день недели. По умолчанию 0 - это воскресенье (у американцев с него начинается новая неделя), но у функции есть параметр, который може задать и другое значение. Берешь переменную типа Date (например Dat), присваиваешь ей значение начала месяца (скажем 01.10.2006) и начинаешь прибавлять по 1 (Dat = Dat + 1). Делаешь это в цикле While-wend, проверяя в качестве условия смену номера месяца (month(Dat)). Если номер месяца поменялся, то начался новый месяц и подсчет окончен. Сам подсчет: проверяешь номер дня недели WeekDay(Dat), если он 0 - воскресенье, 6 - суббота (по умолчанию). Все. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 11 Ответов: 160 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 10.10.06 17:01 |
Или мегаформулой
{=СУММ((ДЕНЬНЕД(ДАТА(ГОД(A1);МЕСЯЦ(A1);СТРОКА(ДВССЫЛ("1:"&ДЕНЬ(ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0))))))=B1)*1)} Не забудь в А1 - дата твоего месяца, В1 - день недели (0 - воскресенье). |
Номер ответа: 3 Автор ответа: ![]() ![]() ICQ: 354-671-214 Вопросов: 18 Ответов: 103 |
Профиль | Цитата | #3 | Добавлено: 10.10.06 17:19 |
2 Дмит:
Но это же для Excel, а не для VBA! Не сбивай товарисча с пути истинного, пусть учится работать на VB головой, а не тырить функции у Excelov. |
Номер ответа: 4 Автор ответа: ![]() ![]() ICQ: 354-671-214 Вопросов: 18 Ответов: 103 |
Профиль | Цитата | #4 | Добавлено: 10.10.06 18:33 |
Вот тебе готовая функция для этого дела. Она считает выходные (субботы + воскресенья).
Немного воображения и соображения и ее можно заставить считать раздельно то и другое. Function VichodnCount(ByVal MonthNumber) ![]() ![]() If MonthNumber < 10 Then MStr = "0" & CStr(MonthNumber) Else MStr = CStr(MonthNumber) End If ![]() While Month(Dat) = MonthNumber If Weekday(Dat, vbMonday) = 6 Then VichodnCount = VichodnCount + 1 ElseIf Weekday(Dat, vbMonday) = 7 Then VichodnCount = VichodnCount + 1 End If ![]() Wend End Function Вот пример использования функции: Sub Test() MsgBox VichodnCount(10) End Sub |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() Вопросов: 11 Ответов: 19 |
Профиль | Цитата | #5 | Добавлено: 10.10.06 23:43 |
Большое спасибо. Все понял.
Кофе не употребляю, а пиво - с удовольствием! Желаю всем успехов. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 223068450 Вопросов: 0 Ответов: 3 |
Профиль | Цитата | #6 | Добавлено: 18.10.06 02:02 |
Да это нечестно надо и голововой покрутить |
Страница: 1 |
|