excel - 计算我们增加给定日期范围的次数
问题描述
我想计算我移动日期(向前)的次数(给定日期范围),同时给定一个间隔,比如说6 个月。
例子:
范围:
开始日期:2019/08/05
结束日期:2020/08/05
间隔: 6个月
- 第一次:2019/08/05 + 6 个月 = 2020/02/05
- 第二次:2020/02/05 + 6 个月 = 2020/08/05
对于这种情况,输出 = 2
我想在特定的单元格中打印我想要的输出。
我想使用以下语法构建 VBA:
DateAdd(间隔,数字,日期)
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
但我收到了这个错误:
解决方案
您收到的错误是因为您试图将 String 分配给 Integer 数据类型。更改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
此外,您正在运行一个无限循环,其中 TempDate 总是从FirstDate
变量循环。
此外,如果您Number
小于或等于零,那么您将获得无限循环。
此外,Else
摆脱了溢出错误。没有它,TempDate
每次循环后都会重置。
推荐阅读
- xml - Flutter - 基于 XML 文件的动态页面设计(通过 REST API)
- javascript - 在 Openlayers 6 中移动一个点
- javascript - 如何导出电子邮件模板并使用 react-email-editor 传递道具?
- asp.net - ASP.NET 论坛应用:获得点赞最多的答案
- reactjs - 从useState反应setState函数不更新状态值
- c++ - 求解函数在以下程序中不起作用
- c# - 无法更新通过数据集连接到数据库的行
- python - 如何在不改变数字位数的情况下从十进制转换为八进制?(Python)
- algorithm - 填充树的 Dp 方法和递归
- ios - NWConnection, 100% CPU 使用率和发送 512 UDP 数据包后崩溃