Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Функции (UDF) "ПАСХА" и "ТРОИЦА" - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Функции (UDF) "ПАСХА" и "ТРОИЦА" (Вычисляют даты православных праздников ПАСХА и ТРОИЦА)
Функции (UDF) "ПАСХА" и "ТРОИЦА"
Alex_ST Дата: Четверг, 26.08.2010, 11:47 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
=======================================================
Функции (UDF) "ПАСХА" и "ТРОИЦА"
=======================================================
Данные Определенные пользователем функции (User-Defined Function или UDF) возвращают в ячейку листа, куда они введены, даты православных праздников ПАСХА и ТРОИЦА для любого года, указанного как аргумент.
По умолчанию (т.е. если аргумент опустить и оставить пустые скобки) - текущий год.
[vba]
Код
Function ПАСХА(Optional ГОД As Integer) As Date
     '---------------------------------------------------------------------------------------
     ' Procedure    : ПАСХА
     ' Author       : KuklP
     ' Topic_HEADER : Определение даты Пасхи
     ' Topic_URL    : http://www.planetaexcel.ru/forum.php?thread_id=14758
     ' Post_Author  : KuklP
     ' Post_URL     : http://www.planetaexcel.ru/docs/forum_upload/post_112532.xls
     ' DateTime     : 29.03.2010, 17:37
     ' Notes 1      : По умолчанию - текущий год
     ' Notes 2      : Формат ячейки-результата должен быть ДАТА
     '---------------------------------------------------------------------------------------
     Dim A As Long, b As Long, c As Long, d As Long, e As Long, z As Long
     Dim МЕСЯЦ As Integer, ДЕНЬ As Integer
     If ГОД = 0 Then ГОД = Year(Date)
     A = ГОД Mod 19: b = ГОД Mod 4: c = ГОД Mod 7
     d = (19 * A + 15) Mod 30
     e = (2 * b + 4 * c + 6 * d + 6) Mod 7
     z = d + e
     МЕСЯЦ = (z + 25) / 35 + 3
     ДЕНЬ = z + 22 - 31 * (МЕСЯЦ / 4)
     ПАСХА = DateSerial(ГОД, МЕСЯЦ, ДЕНЬ) + 13
End Function

Function ТРОИЦА(Optional ГОД As Integer) As Date
     '---------------------------------------------------------------------------------------
     ' Procedure    : ТРОИЦА
     ' Author       : KuklP
     ' Topic_HEADER : Определение даты Троицы
     ' Topic_URL    : http://www.planetaexcel.ru/forum.php?thread_id=14758
     ' Post_Author  : KuklP
     ' Post_URL     : http://www.planetaexcel.ru/docs/forum_upload/post_112532.xls
     ' DateTime     : 29.03.2010, 17:37
     ' Notes 1      : По умолчанию - текущий год
     ' Notes 2      : Формат ячейки-результата должен быть ДАТА
     '---------------------------------------------------------------------------------------
     ТРОИЦА = ПАСХА(ГОД) + 49
End Function
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение=======================================================
Функции (UDF) "ПАСХА" и "ТРОИЦА"
=======================================================
Данные Определенные пользователем функции (User-Defined Function или UDF) возвращают в ячейку листа, куда они введены, даты православных праздников ПАСХА и ТРОИЦА для любого года, указанного как аргумент.
По умолчанию (т.е. если аргумент опустить и оставить пустые скобки) - текущий год.
[vba]
Код
Function ПАСХА(Optional ГОД As Integer) As Date
     '---------------------------------------------------------------------------------------
     ' Procedure    : ПАСХА
     ' Author       : KuklP
     ' Topic_HEADER : Определение даты Пасхи
     ' Topic_URL    : http://www.planetaexcel.ru/forum.php?thread_id=14758
     ' Post_Author  : KuklP
     ' Post_URL     : http://www.planetaexcel.ru/docs/forum_upload/post_112532.xls
     ' DateTime     : 29.03.2010, 17:37
     ' Notes 1      : По умолчанию - текущий год
     ' Notes 2      : Формат ячейки-результата должен быть ДАТА
     '---------------------------------------------------------------------------------------
     Dim A As Long, b As Long, c As Long, d As Long, e As Long, z As Long
     Dim МЕСЯЦ As Integer, ДЕНЬ As Integer
     If ГОД = 0 Then ГОД = Year(Date)
     A = ГОД Mod 19: b = ГОД Mod 4: c = ГОД Mod 7
     d = (19 * A + 15) Mod 30
     e = (2 * b + 4 * c + 6 * d + 6) Mod 7
     z = d + e
     МЕСЯЦ = (z + 25) / 35 + 3
     ДЕНЬ = z + 22 - 31 * (МЕСЯЦ / 4)
     ПАСХА = DateSerial(ГОД, МЕСЯЦ, ДЕНЬ) + 13
End Function

Function ТРОИЦА(Optional ГОД As Integer) As Date
     '---------------------------------------------------------------------------------------
     ' Procedure    : ТРОИЦА
     ' Author       : KuklP
     ' Topic_HEADER : Определение даты Троицы
     ' Topic_URL    : http://www.planetaexcel.ru/forum.php?thread_id=14758
     ' Post_Author  : KuklP
     ' Post_URL     : http://www.planetaexcel.ru/docs/forum_upload/post_112532.xls
     ' DateTime     : 29.03.2010, 17:37
     ' Notes 1      : По умолчанию - текущий год
     ' Notes 2      : Формат ячейки-результата должен быть ДАТА
     '---------------------------------------------------------------------------------------
     ТРОИЦА = ПАСХА(ГОД) + 49
End Function
[/vba]

Автор - Alex_ST
Дата добавления - 26.08.2010 в 11:47
Pall Дата: Пятница, 16.11.2012, 14:01 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Quote
' Notes 2 : Формат ячейки-результата должен быть ДАТА

А как заставить, чтобы формат изменился?
Я пробовал
Code
ActiveCell.NumberFormat = "dd/mm/yyyy"

но не работает.
 
Ответить
Сообщение
Quote
' Notes 2 : Формат ячейки-результата должен быть ДАТА

А как заставить, чтобы формат изменился?
Я пробовал
Code
ActiveCell.NumberFormat = "dd/mm/yyyy"

но не работает.

Автор - Pall
Дата добавления - 16.11.2012 в 14:01
Serge_007 Дата: Пятница, 16.11.2012, 22:51 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Pall)
А как заставить, чтобы формат изменился?
Я пробовал
Code
ActiveCell.NumberFormat = "dd/mm/yyyy"

Если у Вас уже стоит формат даты, то зачем Вы его ещё раз в дату пытаетесь преобразовать?!


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Pall)
А как заставить, чтобы формат изменился?
Я пробовал
Code
ActiveCell.NumberFormat = "dd/mm/yyyy"

Если у Вас уже стоит формат даты, то зачем Вы его ещё раз в дату пытаетесь преобразовать?!

Автор - Serge_007
Дата добавления - 16.11.2012 в 22:51
Мир MS Excel » Вопросы и решения » Готовые решения » Функции (UDF) "ПАСХА" и "ТРОИЦА" (Вычисляют даты православных праздников ПАСХА и ТРОИЦА)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!