Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel dd.mm.yyyy hh:mm在vba中递增半小时_Excel_Vba_Date - Fatal编程技术网

Excel dd.mm.yyyy hh:mm在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是第一天,用

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


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

您可以用一个简单的公式来实现这一点

  • 将开始日期写入单元格A1
  • 在A2中写入
    =A1+(1/48)
  • 从A2向下复制公式
  • 完成了

    这是如何工作的?
    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
  • 在A2中写入
    =A1+(1/48)
  • 从A2向下复制公式
  • 完成了

    这是如何工作的?
    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函数。