Excel 计算增加给定日期范围的时间数
我想计算我移动日期(向前)的次数(给定范围日期),同时给定间隔,比如说,6个月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
例子: 范围:
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
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,我更新了代码,现在应该可以在没有溢出错误的情况下运行了。嗨,迈尔斯,很抱歉回复晚了。谢谢你的时间。