将日期增加数天,数月或数年

时间:2018-05-30 15:06:36

标签: excel excel-vba date vba

我有一个日期,我需要将日期从实际日期增加一天,一个月或一年。这基于下面的字段列表,并且根据输入而不同。每个结果日期也必须是工作日,即周末日或银行假日。我现在将放弃银行假期要求。

我正在使用公式=DATE(YEAR($A$1),MONTH($A$1),DAY($A$1))并根据下面B4中的值对每行中的增量值进行硬编码。 此外,一旦我们通过A4列中的SP,公式将更改为引用使用SP值处的值创建的日期。

因此,如果我们将结果放入E列,则公式将更改为=DATE(YEAR($E$6),MONTH($E$6),DAY($E$6)) 日期也需要采用text(xx,"mm/dd/yyyy")

格式

有关如何在VIA VBA解决方案宏的Excel中创建此内容的任何建议将不胜感激

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 :(得分:1)

我会创建一个用户定义的函数,就像那样

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