Страницы: 1
RSS
Макрос добавления значения предыдущей строки
 
Добрый день.
Есть макрос,который сначала добавляет пустую строчку (градация по рейсам,1,2,3 и тд),производит суммирование в определенных столбцах.Можно ли как-нибудь дописать его,чтобы он выводил ещё и значение по рейсу?Т.е. Рейс 1(стобец Е),добавляется строчка,идёт суммирование в столбцах G и H и нужно,чтобы в столбце А в пустой строчке шла дата по рейсу (на примере Рейса №1 дата 05.01.2017).Можно ли что-нибудь сделать на этот счет?
 
так?
Код
Sub Вставка()
    Dim i As Long, iLastRow As Long
    Dim SumRow As Long
    With Application
        .ScreenUpdating = False 'не обновляются страницы после каждого действия,увеличение скорости вып. макроса,чтобы вывел значения ПОСЛЕ завершения работы макроса,а не во время
        .Calculation = xlCalculationManual 'для увеличения скорости макроса,пеерводит вычисление формул в ручной режим,а потом снова в автомат.
        iLastRow = Cells(Rows.Count, 5).End(xlUp).Row 'опр.последнюю строчку,по 5 столбцу
        SumRow = iLastRow + 1
        If iLastRow = 1 Then 'на случай если все ячейки пустые,то выводит сообщение об ошибке,но необязательное условие
            MsgBox "Нет данных в столбце E!", vbExclamation, "Ошибка"
            Exit Sub
        End If
            For i = iLastRow To 3 Step -1
                If Cells(i, 5) <> Cells(i - 1, 5) Then 'если значение не ровно предыдущей строчке,то вставляется строка
                    Cells(i, 1).EntireRow.Insert
                    SumRow = SumRow + 1
                    Cells(SumRow, "H").FormulaR1C1 = "=SUM(R[" & i - SumRow + 1 & "]C[0]:R[-1]C[0])"
                    Cells(SumRow, "G").FormulaR1C1 = "=SUM(R[" & i - SumRow + 1 & "]C[0]:R[-1]C[0])"
                    Cells(SumRow, "A").Formula = "=A" & CStr(SumRow - 1)
                    SumRow = i
                End If
            Next i
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
    i = 1
    Cells(SumRow, "H").FormulaR1C1 = "=SUM(R[" & i - SumRow + 1 & "]C[0]:R[-1]C[0])"
    Cells(SumRow, "G").FormulaR1C1 = "=SUM(R[" & i - SumRow + 1 & "]C[0]:R[-1]C[0])"
    Cells(SumRow, "A").Formula = "=A" & SumRow - 1
    MsgBox "Пустые строки вставлены!", vbInformation, "Вставка строк"
End Sub
Изменено: heso - 02.03.2017 11:07:32
 
heso,да,то , что нужно.Только он начинает проделывать это всё со второго рейса,первый почему-то пропускает
 
Добавьте в цикл строки
Код
                    Cells(SumRow, "A") = Cells(SumRow - 1, "A")
                    Cells(SumRow, "A").NumberFormat = "dd.mm.yyyy"
и для i=1 тоже
 
Kuzmich,а есть универсальное условие?Просто я ещё возможно буду добавлять и на соседний столбец....
 
Что за универсальное условие?
 
Kuzmich,ну вот то ,что Вы написали,это как я понимаю только для столбца А,раз формат даты используется?
 
Цитата
нужно,чтобы в столбце А в пустой строчке шла дата по рейсу
Вы же это спрашивали
 
Kuzmich,да,согласен,просто вспомнил,что вдруг понадобится значение ячейки соседнего столбца.Прошу прощения,если запутал...
Страницы: 1
Наверх