我有13个工作表,它们具有相似的数据(每个工作表都包含不同客户端的数据)。
我需要为每个工作表执行所有这些步骤:
在下面的屏幕截图中,您可以看到我的代码的结果:在“ 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) Then Rows(X).Insert
Next
Application.ScreenUpdating = True
End Sub
我需要在插入行后进行总结。
答案 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