【问题标题】:dd.mm.yyyy hh:mm incrementing by half hour in vbadd.mm.yyyy hh:mm 在 vba 中增加半小时
【发布时间】:2020-07-02 21:05:42
【问题描述】:

我有一个自定义格式的开始日期和结束日期 dd.mm.yyyy hh:mm 在 Excel 单元格中。 我需要的是使用 VBA 代码填充从开始日期到结束日期增加半小时的日期的特定行。而且我不知道该怎么做。

在网络上有一些具有类似问题的示例,但只有几个月或只有几个小时,而且这些日期格式不是自定义的。

【问题讨论】:

  • 如果您使用正确的函数,日期的格式应该无关紧要。我相信你应该可以在这里使用 DATEADD 函数。

标签: excel vba date


【解决方案1】:

你可以用一个简单的公式来做到这一点。

  1. 将您的开始日期写入单元格 A1
  2. 在 A2 中写入 =A1+(1/48)
  3. 从 A2 向下复制公式

完成。

这是如何工作的?
Excel 日期表示为自 1900 以来的天数。这意味着1900-01-01 是第一天,由1 表示。所有其他日期只是从那时起的天数。 1 代表一天。因此,由于 1 天有 24 小时,1/48 代表半小时。

数字格式dd.mm.yyyy hh:mm Excel 如何显示日期无关紧要,因为 Excel 仅将值(自 1900 以来的天数)保存在单元格值中。 因此,如果您在单元格 2018-10-11 中键入今天的日期,Excel 实际上会将 43384 保存在单元格值中(今天是自 1900-01-01 以来的 43384ᵗʰ 天)。

【讨论】:

    【解决方案2】:

    一种选择是找到起点和终点之间的间隔。请记住,实际上是日期而不是字符串的 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
    

    请注意,不是实际代码,而是给出 OP 不知道从哪里开始的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 2016-05-07
      • 2016-02-02
      • 2016-10-03
      相关资源
      最近更新 更多