Подведите итоги недавно вставленной пустой строки - PullRequest
0 голосов
/ 09 января 2019

У меня есть 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 голосов
/ 09 января 2019

Попробуйте поместить код на свой лист, и он обнаружит изменения в ячейке в столбце 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
0 голосов
/ 09 января 2019

Следующий код должен помочь вам достичь ожидаемых результатов: когда вы вставляете новую строку, она добавляет формулу 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...