Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Макрос неправильно добавляет строчки
 
Доброго времени суток.
Подскажите пожалуйста,почему макрос неправильно добавляет пустые строки?В идеале он должен добавлять пустые строки , если в столбце Е значение предыдущей строки не равняется значению данной.(к примеру,1,1,1 пустая строка,2,2,2 пустая строка и т.д.).В моем файле он не добавляет почему-то строчку между строк 10 и 11.
И подскажите ещё такой момент,как просуммировать значение предыдущих строк столбца Н. Добавил строку 8,по 5 рейсу суммирование выделил желтым.
 
Цитата
как просуммировать значение предыдущих строк столбца Н
Используйте меню Данные - Итоги и не надо будет добавлять пустые строки, чтобы получить суммы
Цитата
почему макрос неправильно добавляет пустые строки?
Зачем в цикле
Код
i = i - 1
 
Цитата
Kuzmich написал:
Зачем в цикле
Код
1 i = i - 1
Если убрать,то не вставляет в первых трех строчках(рейс 1,2,3)
Цитата
Kuzmich написал:
Цитата как просуммировать значение предыдущих строк столбца Используйте меню Данные - Итоги и не надо будет добавлять пустые строки, чтобы получить суммы
Мне бы хотелось сделать это именно макросом,просто нужно суммировать в нескольких столбцах
 
Цитата
не вставляет в первых трех строчках
Исправьте строку
Код
For i = iLastRow To 3 Step -1
 
alexkonkin, А добавлять суммы в столбец "I"? Чтоб не разрывать таблицу, а то это последнее дело...  :(
 
AAF,нет нет нет,в тот же столбец Н
сейчас всё отлично добавляет,но не понимаю,как вставить суммирование предыдущих ячеек...
Код
Sub Вставка()
Dim i As Long, iLastRow As Long
    With Application
        .ScreenUpdating = False 'не обновляются страницы после каждого действия,увеличение скорости вып. макроса,чтобы вывел значения ПОСЛЕ завершения работы макроса,а не во время
        .Calculation = xlCalculationManual 'для увеличения скорости макроса,пеерводит вычисление формул в ручной режим,а потом снова в автомат.
        iLastRow = Cells(Rows.Count, 5).End(xlUp).Row 'опр.последнюю строчку,по 5 столбцу
        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
                End If
            Next i
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
    MsgBox "Пустые строки вставлены!", vbInformation, "Вставка строк"
End Sub
 
Kuzmich, спасибо большое!
 
Цитата
не понимаю,как вставить суммирование предыдущих ячеек
Я вам говорил еще в посте #2, что нужно использовать Итоги
Макросом
Код
Sub Вставка_1()
Dim i As Long, iLastRow As Long, n As Long
Dim iSumma As Double
 With Application
  .ScreenUpdating = False 'не обновляются страницы после каждого действия,увеличение скорости вып. макроса,чтобы вывел значения ПОСЛЕ завершения работы макроса,а не во время
  .Calculation = xlCalculationManual 'для увеличения скорости макроса,пеерводит вычисление формул в ручной режим,а потом снова в автомат.
    iLastRow = Cells(Rows.Count, 5).End(xlUp).Row 'опр.последнюю строчку,по 5 столбцу
    If iLastRow = 1 Then 'на случай если все ячейки пустые,то выводит сообщение об ошибке,но необязательное условие
       MsgBox "Нет данных в столбце E!", vbExclamation, "Ошибка"
       Exit Sub
    End If
      Range("A1:H" & iLastRow).Subtotal groupby:=5, Function:=xlSum, totallist:=8
  .Calculation = xlCalculationAutomatic
  .ScreenUpdating = True
 End With
End Sub
 
Kuzmich,прошу прощения,просто не понял Вас....у меня такая проблема,что нужно суммирование в нескольких столбцах (я некоторые стёр),в том числе и в G,можно ли это как-то сделать без "итого"или без этого никак?
 
Цитата
нужно суммирование в нескольких столбцах

Это как раз можно сделать с помощью последнего макроса, изменив в Subtotal TotalList:=Array(7,8) - это массив суммируемых столбцов
 
Kuzmich,но слово Итог так и будет появляться,да?Его невозможно убрать?
 
Kuzmich, и ещё один вопрос,не подскажите,что означает данная строка в принципе?
Код
.Subtotal groupby:=5, Function:=xlSum, totallist:=8
 
Цитата
Его невозможно убрать?
Можно убрать макросом
 
Kuzmich,и ещё один вопрос,не подскажите,что означает данная строка в принципе?
Код
.Subtotal groupby:=5, Function:=xlSum, totallist:=8
 
А справку посмотреть?
5 - поле для подсчета итогов, столбец Е
8 - суммируемое поле , столбец H
Страницы: 1
Читают тему (гостей: 1)