总结新插入的空白行

时间:2019-01-09 13:09:19

标签: excel vba

我有13个工作表,它们具有相似的数据(每个工作表都包含不同客户端的数据)。

我需要为每个工作表执行所有这些步骤:

  1. 对“ D”列中的数据进行排序-工作
  2. 当“ D”列中的值更改时,在每个工作表中插入一个空行-工作中
  3. 当“ D”列中的值发生更改并且我插入空行时,“ D”列中所有具有相同值的行都应在“ K”列中求和。

在下面的屏幕截图中,您可以看到我的代码的结果:在“ D”列中的值更改后插入了新行。红细胞是我需要做的-总结一下。

使用SumUp截屏 Screenshot with SumUp

我对所有工作表进行排序后,运行以下代码:

Sub InsertRowsAtValueChangeColumnD()

'--- INSERT CLEAR ROWS

  Dim X As Long, LastRow As Long
  Const DataCol As String = "D"
  Const StartRow = 2
  LastRow = Cells(Rows.Count, DataCol).End(xlUp).Row
  Application.ScreenUpdating = False
  For X = LastRow To StartRow + 1 Step -1
    If Cells(X, DataCol).Value <> Cells(X - 1, DataCol) Then Rows(X).Insert
  Next
  Application.ScreenUpdating = True
End Sub

我需要在插入行后进行总结。

2 个答案:

答案 0 :(得分:1)

以下代码应该可以帮助您实现预期的结果,当您插入新行时,它将向该行添加一个SumIf公式,以对D列中的值求和,最后,它将对工作表的最后一行执行相同的操作:

Sub InsertRowsAtValueChangeColumnD()

'--- INSERT CLEAR ROWS
  Dim X As Long, LastRow As Long
  Const DataCol As String = "D"
  Const StartRow = 2
  LastRow = Cells(Rows.Count, DataCol).End(xlUp).Row
  Application.ScreenUpdating = False
  For X = LastRow To StartRow + 1 Step -1
    If Cells(X, DataCol).Value <> Cells(X - 1, DataCol).Value Then
        Rows(X).Insert
        Cells(X, "K").FormulaR1C1 = "=SUMIF(C[-7],R[-1]C[-7],C[-7])"
    End If
  Next
  LastRow = Cells(Rows.Count, DataCol).End(xlUp).Row
  Cells(LastRow + 1, "K").FormulaR1C1 = "=SUMIF(C[-7],R[-1]C[-7],C[-7])"
  Application.ScreenUpdating = True
End Sub

答案 1 :(得分:0)

尝试将代码放在您的工作表上,这将检测到第4列上的单元格更改为D。活动单元格用于已更改的单元格,也许您可​​以将逻辑放在if语句中,如有任何问题,请大喊大叫

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If (Target.Column = 4) Then
     'MsgBox ActiveCell.Address
      ActiveCell.EntireRow.Offset(1, 0).Insert
      End If
      End Sub