Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / расчёт дней обычный/високосный / 6 сообщений из 6, страница 1 из 1
14.01.2009, 10:40
    #35756598
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расчёт дней обычный/високосный
Помогите, пожалуйста!
Уже мозги плавятся.
Есть формула:
Код: plaintext
1.
'а = (дата платежа - дата поставки)* '(архив договоров) %текущий / 366
a = (Лист4.Cells( 2 ,  1 ) - Лист4.Cells( 6 ,  1 )) * Лист5.Cells(iDog,  9 ) /  366 

Требуют, чтобы было деление не на 366 или 365, а кусочек от 365 и кусочек от 366, при условии того, что "дата платежа" была в 2008, а "дата поставки" - в 2009 году.

Спасибо огромное, добрые люди!
...
Рейтинг: 0 / 0
14.01.2009, 10:41
    #35756600
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расчёт дней обычный/високосный
нужно как бы автоматом определять високосный год или нет... в этом, собственно, и вопрос...
...
Рейтинг: 0 / 0
14.01.2009, 10:43
    #35756605
Restavraciya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расчёт дней обычный/високосный
...
Рейтинг: 0 / 0
14.01.2009, 10:50
    #35756620
Restavraciya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расчёт дней обычный/високосный
Что первое пришло на ум (возможно там оно тоже есть)
от даты 31/12/год отнять 364 дней и проверить полученную дату - если получится 02/01/год то это високосный, если 01/01/год - невисокосный
или как то так
Отнимать datediff-ом, если он есть в ексельном vba, или просто дата-364 (должно сработать)
...
Рейтинг: 0 / 0
15.01.2009, 09:36
    #35758552
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расчёт дней обычный/високосный
_На поиск
Помогло вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Function DaysInYear(lngYear As Long) As Long
    If lngYear Mod  4  >  0  Then
       DaysInYear =  365 
    Else
       If lngYear Mod  100  >  0  Then
          DaysInYear =  366 
       Else
          If lngYear Mod  400  >  0  Then
             DaysInYear =  365 
          Else
             DaysInYear =  366 
          End If
       End If
    End If
End Function
Спасибо за помощь!
...
Рейтинг: 0 / 0
18.01.2009, 21:48
    #35763651
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
расчёт дней обычный/високосный
http://ru.wikipedia.org/wiki/Високосный_год
Код: plaintext
1.
2.
3.
4.
5.
6.
Public Function DaysInYear(lngYear As Long) As Long
    If ( lngYear Mod  4  =  0  And lngYear Mod  100  >  0  ) Or lngYear Mod  400  =  0  Then
       DaysInYear =  366 
    Else
       DaysInYear =  365 
    End If
End Function
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / расчёт дней обычный/високосный / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]