Excel 计算增加给定日期范围的时间数

Excel 计算增加给定日期范围的时间数,excel,vba,loops,excel-formula,Excel,Vba,Loops,Excel Formula,我想计算我移动日期(向前)的次数(给定范围日期),同时给定间隔,比如说,6个月 例子: 范围: Private Sub CommandButton1_Click() Dim FirstDate As Date ' Declare variables. Dim IntervalType As Integer Dim Number As Integer Dim EndDate As Date Dim TempDate As Date Dim

我想计算我移动日期(向前)的次数(给定范围日期),同时给定间隔,比如说,6个月


例子: 范围:

Private Sub CommandButton1_Click()
    Dim FirstDate As Date    ' Declare variables.
    Dim IntervalType As Integer
    Dim Number As Integer
    Dim EndDate As Date
    Dim TempDate As Date

    Dim i As Integer

    IntervalType = "m" ' "m" specifies MONTHS as interval.

    FirstDate = Cells(1, 1).Value
    EndDate = Cells(1, 2).Value
    Number = Cells(1, 3).Value  ' "Number" For the syntax DateAdd.

    i = 1
    Do Until TempDate = EndDate
        TempDate= DateAdd(IntervalType, Number, FirstDate)
        i = i + 1
    Loop
    Range("D1").Value = i
End Sub
开始日期:2019/08/05

截止日期:2020/08/05

间隔时间:6个月

  • 第一次:2019/08/05+6个月=2020/02/05
  • 第二次:2020/02/05+6个月=2020/08/05
对于这种情况,输出=2

Private Sub CommandButton1_Click()
    Dim FirstDate As Date    ' Declare variables.
    Dim IntervalType As Integer
    Dim Number As Integer
    Dim EndDate As Date
    Dim TempDate As Date

    Dim i As Integer

    IntervalType = "m" ' "m" specifies MONTHS as interval.

    FirstDate = Cells(1, 1).Value
    EndDate = Cells(1, 2).Value
    Number = Cells(1, 3).Value  ' "Number" For the syntax DateAdd.

    i = 1
    Do Until TempDate = EndDate
        TempDate= DateAdd(IntervalType, Number, FirstDate)
        i = i + 1
    Loop
    Range("D1").Value = i
End Sub

我想在特定的单元格中打印我想要的输出

我想使用以下语法构建VBA:

日期添加(间隔、编号、日期)

Private Sub CommandButton1_Click()
    Dim FirstDate As Date    ' Declare variables.
    Dim IntervalType As Integer
    Dim Number As Integer
    Dim EndDate As Date
    Dim TempDate As Date

    Dim i As Integer

    IntervalType = "m" ' "m" specifies MONTHS as interval.

    FirstDate = Cells(1, 1).Value
    EndDate = Cells(1, 2).Value
    Number = Cells(1, 3).Value  ' "Number" For the syntax DateAdd.

    i = 1
    Do Until TempDate = EndDate
        TempDate= DateAdd(IntervalType, Number, FirstDate)
        i = i + 1
    Loop
    Range("D1").Value = i
End Sub
但我得到了一个错误:


您遇到的错误是因为您试图为和整数数据类型分配字符串。将
IntervalType
更改为字符串

Sub DateTest()
    Dim FirstDate As Date    ' Declare variables.
    Dim IntervalType As String
    Dim Number As Integer
    Dim EndDate As Date
    Dim TempDate As Date
    Dim i As Integer

    IntervalType = "m" ' "m" specifies MONTHS as interval.
    FirstDate = Cells(1, 1).Value
    EndDate = Cells(1, 2).Value
    Number = Cells(1, 3).Value  ' "Number" For the syntax DateAdd.

    ' If number is not greater than zero an infinite loop will happen.
    If Number <= 0 Then
        MsgBox "Number needs to be greater than 0", vbCritical
        Exit Sub
    End If

    i = 1
    Do Until TempDate = EndDate
       If i <= 1 Then
           TempDate = DateAdd(IntervalType, Number, FirstDate)
       Else
           TempDate = DateAdd(IntervalType, Number, TempDate)
        End If
        i = i + 1
        Debug.Print i
    Loop
    Range("D1").Value = i - 1
End Sub
Sub-DateTest()
Dim FirstDate作为日期声明变量。
作为字符串的Dim IntervalType
整数形式的数字
Dim EndDate作为日期
日期为日期
作为整数的Dim i
IntervalType=“m”'“m”指定月份作为间隔。
FirstDate=单元格(1,1).值
EndDate=单元格(1,2).值
Number=单元格(1,3)。语法DateAdd的值为“Number”。
'如果数字不大于零,将发生无限循环。

如果你在哪一行发现了错误?第13行中的Hi@rohrl77对吗?你好,迈尔斯,谢谢。现在它看起来更好了,如果我选择例如19年7月25日作为开始日期20年7月25日(频率6M)结束日期,它的效果很好,但是如果我更改结束日期,比如说21年7月25日,我会得到一个错误:“溢出”它没有说太多,是什么原因造成的?再次感谢Lorenzo,我更新了代码,现在应该可以在没有溢出错误的情况下运行了。嗨,迈尔斯,很抱歉回复晚了。谢谢你的时间。