Страницы: 1
RSS
Макрос найти последнюю ячейку столбца и записать в нее сумму по этому столбцу
 
Добрый день. В шаблон xls выгружаются данные из БД. Соответственно количество строк в таблице может быть разным. Подскажите, пожалуйста, макрос нужно найти последнюю ячейку в столбце D и записать в неё сумму значений ячеек начиная с D9 до последней заполненной ячейки в этом столбце.
Изменено: planet - 26.09.2018 11:33:21
 
Last_Row = Cells(Rows.Count,4).End(xlUp).Row

Вместо 4 ставим порядковый номер интересующего столбца (D - 4 столбец). Теперь Last_Row = последней заполненной строке
Ну а дальше можете складывать
Sum(Range(cells(9,4),Cells(Last_row,4)))
Ячейка в которую записать сумму будет переменная +1
Если выложите файл пример, смогу написать макрос прям в файле
Изменено: Михаил Комиссаров - 26.09.2018 11:44:16
C2-C4
 
Код
Sub SumRange()
Dim lRw As Long
    With Worksheets("Лист1")
        lRw = .Cells(.Rows.Count, 4).End(xlUp).Row
        Cells(lRw + 1, 4).Value = Application.Sum(Range("D9:D") & lRw)
    End With
End Sub
 
vikttur, С Вашим примером выходит ошибка: runtime error 1004 method range of object global fail
Вот пример.
 
planet, День добрый!
А через макрорекодер нельзя?
Всего 2(3) шага Вам надо.  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Всё работает: просто Витя со скобочкой немного поторопился )
Код
Cells(lRw + 1, 4).Value = Application.Sum(Range("D9:D" & lRw))


 
Юрий М, Спасибо!
Изменено: planet - 26.09.2018 15:50:59
 
Цитата
planet написал:
айти последнюю заполненную ячейку
через КОНТРЛ и стрелочка в низ
Должно получится как то так
Код
Sub ??????1()
'
' ??????1 ??????
'
'
    Range("D9").Select
    Selection.End(xlDown).Select
    ActiveCell.FormulaR1C1 = "= ""????? ???????"""
    Range("D12").Select
End Sub


В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
А как запустить этот макрос чтобы отработал сразу после открытия файла? Если через workbook и Open слетает другой макрос с защитой ячеек столбца D.
Изменено: planet - 26.09.2018 16:20:09
 
Цитата
planet написал:
С Вашим примером выходит ошибка
Пример надо вовремя показывать, чтобы можно было код проверить
 
Решение найдено, через функцию ActiveSheet.Unprotect.
vikttur, буду знать. И спасибо за подсказку!
 
Добрый день. Пытаюсь доработать макрос, чтобы вставлял не значение суммы, а формулу суммы. Изначально было 3 человека, тогда макрос с этим кодом работает правильно:
Код
Sub SumRange1()
 
Dim lRw As Long
    With Worksheets("Лист1")
        lRw = .Cells(.Rows.Count, 4).End(xlUp).Row
        Cells(lRw + 1, 4).FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
    End With
End Sub

Формула в ячейку D12 записывается как =СУММ(D9:D11)
Но если добавляем еще одного человека, тогда формула записывается в последнюю заполненную ячейку, но уже не учитывает первого из списка D9, т.е. формула записывается как СУММ(D10:D12), а должно быть D9:D12. Помогите, пожалуйста...
Изменено: planet - 27.09.2018 10:05:44
 
Цитата
planet написал:
т.е. формула записывается как СУММ(D10:D12), а должно быть D9:D12.
           
Код
Cells(lRw + 1, 4).FormulaLocal = "=СУММ($D$9:D" & lRw & ")"
Как то так.
 
pitby, Спасибо!!!  ;) Заработало.
Страницы: 1
Наверх