Excel VBA: вставка формул с помощью макроса

Автор lapin9126, 12 апреля 2018, 19:22

lapin9126

Помогите с написанием макроса суть работы которого в следующем.

В столбце "A" определить последнюю заполненную ячейку и отступив вниз 5 строк, от последней заполненной ячейки, вставить слово "Итог" в первый столбец, а во второй формулу суммы значений столбца "В" начиная с третьей ячейки.

Через одну строку от "Итог" в первый столбец вставить слово "Рабочий", а во второй формулу суммы значений, которые расположены в первом столбце напротив ячеек с столбца "В" с "Иванов". В столбце А есть и другие числовые данные (в файле-примере я их не указал), поэтому нужно считать именно по фразе "Иванов".

Ещё через строку в первый столбец вставить слово "Коррекция", а во второй формулу разности значений "Общее" и "Рабочий".

И закрасить ячейки в которые были произведены вставки.

Для примера конечного результата прилагаю файл.

[вложение удалено администратором]

Администратор

Я сделал не полностью по вашему заданию:
последняя строка ищется в столбце B,, т.к. в файле-примере в нём больше строк.

Макрос
Sub Макрос()

    Dim lr As Long
   
   
    ' Откл. монитора, чтобы ускорить макрос.
    Application.ScreenUpdating = False
   
    '1. Поиск последней строки по столбцу B.
        ' End не ищет в скрытых строках.
    lr = Cells(Rows.Count, "B").End(xlUp).Row
   
    '2. Функционал.
    '1) Итог.
    Cells(lr + 5, "A").Value = "Итог"
    Cells(lr + 5, "B").Formula = "=SUM(B3:B" & lr & ")"
    Cells(lr + 5, "A").Resize(, 2).Interior.Color = 49407
   
    '2) Рабочий.
    Cells(lr + 7, "A").Value = "Рабочий"
    Cells(lr + 7, "B").Formula = "=SUMIF(B3:B" & lr & ",""Иванов"",A3:A" & lr & ")"
    Cells(lr + 7, "A").Resize(, 2).Interior.Color = 49407
   
    '3) Коррекция.
    Cells(lr + 9, "A").Value = "Коррекция"
    Cells(lr + 9, "B").Value = Cells(lr + 5, "B").Value - Cells(lr + 7, "B").Value
    Cells(lr + 9, "A").Resize(, 2).Interior.Color = 49407
   
    '3. Сообщение.
    Application.ScreenUpdating = True
    MsgBox "Готово.", vbInformation

End Sub
[свернуть]

lapin9126