Автор Тема: Excel: Как протянуть формулу в ячейках разного размера?  (Прочитано 1349 раз)

Оффлайн kuzma999-999

  • Посетитель форума
  • Сообщений: 2
В аттаче прикрепленный файл. Необходимо протянуть формулы по столбцам G, H и I. Но этого сделать нельзя, так как объединенные ячейки разного размера

Строк ооочень много в оригинальном файле. Если проставлять формулы вручную, то работы не на одну неделю....можно как-то автоматизировать процесс? С таблицей можно делать все что угодно...главное чтобы все данные были в итоге в каждой пустой ячейке...

Крик души! Помогите пожалуйста кто может..

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

Оффлайн Администратор

  • Administrator
  • Сообщений: 1691
С помощью макроса можно.
Для работы макроса, на листе не должно быть скрытых строк.
Формулы записаны прямо в макрос, а не берутся из листа из строки 3.

Для столбцов H:I можно вставить формулы без макроса, т.к. в этих столбцах во всех ячейках одинаковые формулы. Для этого выделите столбец H от строки 3 до последней строки, в которой есть данные, в строку формул вставьте формулу и нажмите сочетание клавиш Ctrl+Enter. То же сделайте для столбца I.

Макрос
Sub макрос()
   
    Dim RowsCount As Long
    Dim lr As Long, i As Long
   
   
    '1. Отключение монитора и пересчёта формул, чтобы ускорить макрос.
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
   
    '2. Поиск последней строки с данными. End не ищет в скрытых строках.
    lr = Cells(Rows.Count, "A").End(xlUp).Row
   
    '3. Вставка формул в столбец G.
    i = 3
    Do
        RowsCount = Cells(i, "G").MergeArea.Rows.Count
        Cells(i, "G").Formula = "=SUM(RC[-1]:R[" & RowsCount - 1 & "]C[-1])"
        i = i + RowsCount
        If i > lr Then
            Exit Do
        End If
    Loop
   
    '4. Вставка формул в столбцы H:I.
    Range("H3:H" & lr).FormulaR1C1 = "=RC[-1]/RC[2]"
    Range("I3:I" & lr).FormulaR1C1 = "=RC[-2]/RC[2]"
   
    '5. Включение того, что отключили.
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
   
    '6. Сообщение.
    MsgBox "Готово.", vbInformation

End Sub

Оффлайн kuzma999-999

  • Посетитель форума
  • Сообщений: 2
Огромнейшее человеческое спасибо! Очень выручили! Все работает! Удачи вам и успехов во всем!