У меня есть дата, которую мне нужно будет увеличить на день, месяц или год от фактической даты.Это основано на списке полей ниже и отличается для каждого ввода.Кроме того, каждая итоговая дата должна быть рабочим, то есть не выходным или праздничным днем.Кроме того, если полученная дата - либо 25 декабря, либо 1 января, то день необходимо перенести на следующий рабочий день (а не на выходной день).
Я создал это в Excel, используя несколько формул, хотя этонемного неуклюжий
Ниже приведен мой набор данных
Рабочий день 15/05/2018
Tenor Settlement Value Settlement Period
ON 1 Day
TN 2 Day
SP 2 Day
SN 3 Day
1W 7 Day
2W 14 Day
3W 21 Day
1M 1 Month
2M 2 Month
3M 3 Month
В столбце E - я использую формулу
=IF(D4="Day",$B$1+C4,IF(D4="Month",EDATE($B$1,C4),(TEXT($B$1,"dd/mm/")&(YEAR($B$1)+C4))+0))
В столбце F - я использую формулу
=E4+LOOKUP(WEEKDAY(E4),{1,2,3,4,5,6,7},{1,0,0,0,0,0,2})
В столбце G - я использую формулу
= F4 + IF (И (ИЛИ (ТЕКСТ (F4, "ddmm") = "2512" , ТЕКСТ (F4, "ДДММ") = "0101"), ДЕНЬНЕД (F4)> = 2, ДЕНЬНЕД (F4), <= 6), LOOKUP (ДЕНЬНЕД (F4), {1,2,3,4,5,6,7}, {0,1,1,1,1,3,0}), LOOKUP (ДЕНЬНЕД (F4), {1,2,3,4,5,6,7}, {1,0,0,0,0,0,2})) </p>
В формате HI дата в мм / дд / гггг, и у меня есть желаемый результат.
Storax любезно создал для меня функцию, которая копирует мою формулу Excel в столбце E - в этой теме Увеличивает дату на количество дней, месяцев или лет
Function IncDate(ByVal dt As Date, ByVal add As Long, ByVal dmy As String) As Date
Select Case UCase(dmy)
Case "DAY"
IncDate = DateAdd("d", add, dt)
Case "MONTH"
IncDate = DateAdd("m", add, dt)
Case "YEAR"
IncDate = DateAdd("yyyy", add, dt)
Case Else
IncDate = dt
End Select
Могу воспользоваться некоторыми советами о том, как я могу включить свои формулы в столбцы F & G, чтобы сделать процесс менее громоздким.