Excel:如何在两个不同时间之间按每小时添加行

Excel:如何在两个不同时间之间按每小时添加行

我搜索了很多,想弄清楚如何根据时间和日期在两行之间添加行,但不幸的是我找不到任何公式。如果有人能帮助我,我将不胜感激。

正如你在图片中看到的,我有专栏 J日期和时间 和列结果

为了使我的工作更轻松,我添加了两列大号哪个是日期时间分别。

示例图片

我想查看列中的前两行大号如果有的话他们之间错过了一个小时,然后为每个小时添加一行,并将单元格放在列中结果为“0”。

在上图中,00:003:00,所以我想让 excel 在它们之间添加两行新行,并在“M”列添加“0”。

另外检查,如果两行之间有一天的差距,那么在它们之间添加 24 行。例如,我需要在两行之间添加 50 行新行2010年1月1日 11:002010年1月3日 14:00并且列中每行的结果为零

最终结果如下:

在此处输入图片描述

答案1

您必须使用这个宏:

Public Sub fillHours()
theEnd = False
i = 2
timecolumn = 7
While theEnd = False:
    firstDate = Me.Cells(i, timecolumn - 1)
    If firstDate <> "" Then
        secondDate = Me.Cells(i + 1, timecolumn - 1)
        If firstDate = secondDate Then
            firstHour = Me.Cells(i, timecolumn)
            secondHour = Me.Cells(i + 1, timecolumn)
            diffHour = ((secondHour * 24) - (firstHour * 24)) - 1
            If diffHour > 0 Then
                For j = 1 To diffHour
                    Rows(i + j).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
                    newHour = Str(i + j - 1) & ":00"
                    newHour = Right(newHour, Len(newHour) - 1)
                    Me.Cells(i + j, timecolumn) = newHour
                    Me.Cells(i + j, timecolumn - 1) = Me.Cells(i, timecolumn - 1)
                    Me.Cells(i + j, timecolumn + 1) = 0
                Next j
            End If
        ElseIf firstDate < secondDate Then
            diffDate = secondDate - firstDate
            maxInsertedRows = diffDate * 24
            firstHour = Me.Cells(i, timecolumn)
            secondHour = Me.Cells(i + 1, timecolumn)
            diffHour = ((secondHour * 24) - (firstHour * 24)) - 1
            If diffHour < 0 Then
                diffHour = (23 - (firstHour * 24)) + (secondHour * 24)
                realInsertedRows = maxInsertedRows - (24 - diffHour)
            Else
                realInsertedRows = maxInsertedRows - diffHour + 2
            End If
            For j = 1 To realInsertedRows
                Rows(i + j).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
                basicHour = i + j - 1
                divbasicHour = Int(basicHour / 24)
                basicHour = basicHour - (divbasicHour * 24)
                newHour = Str(basicHour) & ":00"
                newHour = Right(newHour, Len(newHour) - 1)
                Me.Cells(i + j, timecolumn) = newHour
                Me.Cells(i + j, timecolumn + 1) = 0
                If newHour <> "0:00" Then
                    Me.Cells(i + j, timecolumn - 1) = Me.Cells(i + j - 1, timecolumn - 1)
                Else
                    Me.Cells(i + j, timecolumn - 1) = Me.Cells(i + j - 1, timecolumn - 1) + 1
                End If
            Next j

        End If
        i = i + 1
    Else
        theEnd = True
    End If
Wend
End Sub

使用ALT+打开宏F11,双击左侧的工作表并将代码粘贴到右侧。检查行中的值timecolumn = 7是否与你的时间柱子。

相关内容