Excel dd.mm.yyyy hh:mm在vba中递增半小时
我有这个自定义格式的开始日期和结束日期 dd.mm.yyyy hh:mm在excel单元格中。 我需要的是使用VBA代码,用从开始日期到结束日期递增半小时的日期填充特定行。我不知道该怎么做Excel dd.mm.yyyy hh:mm在vba中递增半小时,excel,vba,date,Excel,Vba,Date,我有这个自定义格式的开始日期和结束日期 dd.mm.yyyy hh:mm在excel单元格中。 我需要的是使用VBA代码,用从开始日期到结束日期递增半小时的日期填充特定行。我不知道该怎么做 在web上有一些类似问题的例子,但只有几个月或几个小时,并且这些日期格式不是自定义的。您可以用一个简单的公式来实现这一点 将开始日期写入单元格A1 在A2中写入=A1+(1/48) 从A2向下复制公式 完成了 这是如何工作的? Excel日期表示为自1900以来的天数。这意味着1900-01-01是第一天,用
在web上有一些类似问题的例子,但只有几个月或几个小时,并且这些日期格式不是自定义的。您可以用一个简单的公式来实现这一点
=A1+(1/48)
Excel日期表示为自
1900
以来的天数。这意味着1900-01-01
是第一天,用1
表示。所有其他日期都只是从那时起的天数<代码>1表示一天。因此,因为一天有24小时1/48
代表半小时
数字格式dd.mm.yyyy hh:mm
Excel显示日期的方式不相关,因为Excel只在单元格值中保存值(自1900
以来的天数)。
因此,如果您将今天的日期键入单元格
2018-10-11
Excel实际上会将43384
保存在单元格值中(今天是43384ᵗʰ1900-01-01)之后的第天。你可以用一个简单的公式来做这件事
=A1+(1/48)
Excel日期表示为自
1900
以来的天数。这意味着1900-01-01
是第一天,用1
表示。所有其他日期都只是从那时起的天数<代码>1表示一天。因此,因为一天有24小时1/48
代表半小时
数字格式dd.mm.yyyy hh:mm
Excel显示日期的方式不相关,因为Excel只在单元格值中保存值(自1900
以来的天数)。
因此,如果您将今天的日期键入单元格
2018-10-11
Excel实际上会将43384
保存在单元格值中(今天是43384ᵗʰ自1900-01-01
)起的第天。一个选项是找到起始点和停止点之间的间隔。请记住,实际上是日期而不是字符串的excel日期实际上是整数。要记住的第二件事是时间是小数部分,它代表一天的分数。测试您的日期(假设在A1中)是实际日期还是带
=ISNUMBER(A1)
如果返回的是TRUE
您无需担心转换日期。如果返回FALSE
,它实际上是一个字符串,需要转换为excel才能使用它
将此间隔除以30分钟,或30/60/24,再加上1。这将告诉您需要多少次迭代,您可以将这些迭代放入For循环中
Start_Number = Range("A1")
End_number = Range(("A2")
Stamp = Start_Number
Interval_number = End_Number - Start_Number
Counter = integer of (Interval_number / (30/60/24))
For x = 1 to counter
write Stamp to cell
Stamp = Stamp + 30/60/24
Next x
或者你可以设置一个while循环
Do While datetime < Stop_Point
Write datetime to cell
Datetime=datetime + 30/60/24
Loop
Do While datetime
请注意,不是实际代码,而是给出了OP不知道从哪里开始的想法。一个选项是找到开始点和停止点之间的间隔。请记住,实际上是日期而不是字符串的excel日期实际上是整数。要记住的第二件事是时间是小数部分,它代表一天的分数。测试您的日期(假设在A1中)是实际日期还是带
=ISNUMBER(A1)
如果返回的是TRUE
您无需担心转换日期。如果返回FALSE
,它实际上是一个字符串,需要转换为excel才能使用它
将此间隔除以30分钟,或30/60/24,再加上1。这将告诉您需要多少次迭代,您可以将这些迭代放入For循环中
Start_Number = Range("A1")
End_number = Range(("A2")
Stamp = Start_Number
Interval_number = End_Number - Start_Number
Counter = integer of (Interval_number / (30/60/24))
For x = 1 to counter
write Stamp to cell
Stamp = Stamp + 30/60/24
Next x
或者你可以设置一个while循环
Do While datetime < Stop_Point
Write datetime to cell
Datetime=datetime + 30/60/24
Loop
Do While datetime
请注意,不是实际代码,而是给出了OP不知道从哪里开始的想法。如果使用正确的函数,日期的格式应该无关紧要。我相信您应该可以在这里使用DATEADD函数。如果使用正确的函数,日期的格式不应该重要。我相信您应该能够在这里使用DATEADD函数。