Увеличение даты на количество дней, месяцев или лет - PullRequest
0 голосов
/ 30 мая 2018

У меня есть дата, которую мне нужно будет увеличить на день, месяц или год от фактической даты.Это основано на списке полей ниже и отличается для каждого ввода.Кроме того, каждая итоговая дата должна быть рабочим, то есть не выходным или праздничным днем.Сейчас я откажусь от требований к банковским выходным.

Я использую формулу =DATE(YEAR($A$1),MONTH($A$1),DAY($A$1)) и жестко кодирую значение приращения в каждой строке на основе значения в B4 ниже.Кроме того, после прохождения SP в столбце A4 формула меняется на ссылку на дату, созданную с использованием значения в значении SP.

Таким образом, если мы поместим результаты в столбец E, формула изменится на =DATE(YEAR($E$6),MONTH($E$6),DAY($E$6)) Дата также должна быть в формате text(xx,"mm/dd/yyyy")

Любые предложения о том, как создать это вExcel VIA макрос решения VBA будет оценен

A1
=today()

A4 B4
ON  1 Day
TN  2 Day
SP  2 Day
SN  2 Day
1W  7 Day
2W  14 Day
3W  21 Day
1M  1 Month
2M  2 Month
3M  3 Month
4M  4 Month
5M  5 Month
6M  6 Month
7M  7 Month
8M  8 Month
9M  9 Month
10M 10 Month
11M 11 Month
1Y  1 Year
15M 15 Month
18M 18 Month
21M 21 Month
2Y  2 Year
3Y  3 Year
4Y  4 Year
5Y  5 Year
6Y  6 Year
7Y  7 Year
8Y  8 Year
9Y  9 Year
10Y 10 Year
15Y 15 Year
20Y 20 Year
25Y 25 Year
30Y 30 Year

1 Ответ

0 голосов
/ 30 мая 2018

Я бы создал пользовательскую функцию, что-то вроде этого

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
End Function

И тогда вы могли бы написать в D

=IncDate(TODAY();B4;C4)

Затем вам нужно отформатировать ячейку в соответствии с вашими потребностями.

Результат будет выглядеть так

enter image description here

...