如何添加新行并在VBA中填写“0”?

问题描述 投票:0回答:1

我正在尝试用他们的电子表格帮助同事(在MAC Excel V16.16.8上),因为我有一些编码经验,主要是在SQL中,只有非常非常基本的VBA级别。

他们接收每日数据(这就是为什么需要VBA),我已经设法使用基本宏将它们拆分成单独的表格。

在这个例子中,表的名称是“伯明翰”。

B栏“间隔”是一天中的小时数(24小时制)。它们仅接收当天数据实际存在于其他列中的任何数据。但是,对于他们的报告,他们需要添加/插入新行,即使在0-23(午夜 - 晚上11点)没有任何数据的情况下也是如此。

“间隔”列需要按照降序排列的正确小时/数字,如示例所示,DateCampaign列始终相同。并将其余的细胞用于包含“0”的Total_CallsClosed等。

如何添加新行,“间隔”和“0”?

我尝试了几种不同的方法,主要是试图合并一个只包含所有“间隔”0-23的大多数空白的单独表。但是,我在每种方法中都失败了。

我几乎100%肯定有一个相对简单的方法,但我缺乏具体的VBA知识。

非常感激任何的帮助。

谢谢

excel vba
1个回答
1
投票

您可以获取当前日期和当前广告系列,并插入缺少的行,如下所示:

Private Sub FillAllHours()
    Dim i As Long
    Dim myDate As Date      ' value from date column
    Dim myCampain As String ' value from campaign column

    With ActiveSheet
        myDate = .Cells(.Rows.Count, 1).End(xlUp).Value
        myCampain = .Cells(.Rows.Count, 3).End(xlUp).Value
        For i = 2 To 25
            If .Cells(i, "B") <> i - 2 Then ' if row is missing
                .Rows(i).Insert             ' insert row above
                .Cells(i, "B") = i - 2      ' insert hour number
                .Cells(i, "A") = myDate     ' insert date
                .Cells(i, "C") = mycampaign ' insert campaign
                .Cells(i, "D").Resize(1, 9).Value = 0 ' fill 9 cells with 0
            End If
        Next i
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.