excel - 以 1 小时为间隔分割时间范围

标签 excel vba

想要将时间范围分割为 1 小时间隔

enter image description here

将单元格 A2 和 A3 中的给定时间范围拆分为 1 小时间隔,时间范围将更改几个时间,并且在(宏)单击时应将给定时间范围拆分为 1 小时间隔。

最佳答案

创建每小时序列

Sub CreateHourlySequence()

    Dim ws As Worksheet: Set ws = ActiveSheet ' improve!
    
    Dim dt1: dt1 = ws.Range("A2").Value
    Dim dt2: dt2 = ws.Range("A3").Value
    
    Dim dfCell As Range: Set dfCell = ws.Range("C2")
    dfCell.Resize(ws.Rows.Count - dfCell.Row + 1).ClearContents

    Select Case False
        Case IsDate(dt1), IsDate(dt2): Exit Sub
    End Select
    
    Dim dtDiff As Long: dtDiff = DateDiff("h", dt1, dt2)
    
    Dim dtStart As Date, dStep As Long
    
    Select Case dtDiff
        Case Is > 0: dtStart = dt1: dStep = 1
        Case Is < 0: dtStart = dt2: dStep = -1
    End Select
    
    Dim rCount As Long: rCount = Abs(dtDiff) + 1
    Dim Data() As Date: ReDim Data(1 To rCount, 1 To 1)
    
    Dim d As Long, r As Long
    
    If dStep = 0 Then
        Data(1, 1) = dtStart
    Else
        For d = 0 To dtDiff Step dStep
            r = r + 1
            Data(r, 1) = DateAdd("h", d, dtStart)
        Next d
    End If
    
    dfCell.Resize(rCount).Value = Data
    
End Sub

关于excel - 以 1 小时为间隔分割时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74904919/

相关文章:

VBA - 如何从网站下载.xls并将数据放入Excel文件

excel - 将复制的范围(从关闭的工作簿)插入到打开的工作簿的命名范围中

vba - 数字到日期

excel - 将常量的字符串表示形式转换为常量?

sql - MS Access SQL - 如何使用一个 LIKE 运算符搜索多个字段

vba - Excel VBA 中的动态函数调用

excel - 带有与语言无关的引用字符串的 INDIRECT 函数

excel - VBA 将范围复制到最后一行并粘贴到新工作表上,单元格 A19 之后的第一个空行

excel - 识别单词中的模式

vba - Excel 单元格默认度量单位