【问题标题】:How to Add New Rows and Fill with "0" in VBA?如何在 VBA 中添加新行并填充“0”?
【发布时间】:2019-03-19 14:36:58
【问题描述】:

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

他们接收每日数据(这就是需要 VBA 的原因),我已设法使用基本宏将这些数据拆分为单独的工作表。

在本例中,工作表的名称是“Birmingham”。

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

“间隔”列需要正确的小时/数字,如示例所示,DateCampaign 列始终相同。其余单元格为Total_CallsClosed 等,包含“0”。

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

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

我几乎 100% 确定有一种相对简单的方法可以做到这一点,但我缺乏特定的 VBA 知识。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 欢迎来到 StackOverflow,这是一个用于回答特定编码问题的协作网站。如果您可以改写您的帖子以提出特定问题。在目前的形式中,当目标是获得客观答案时,您的问题会导致主观反应。

标签: excel vba


【解决方案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

【讨论】:

  • 刚刚对此进行了测试,到目前为止它运行良好。你让我和我的同事们度过了愉快的一天!谢谢。我根本没想过要这样做。如果我遇到任何问题,会通知您。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多