Копирование формул в ячейках с A13 по K13

У меня есть файл, в котором есть запрос мощности. Запрос начинается со строки столбца 13 столбца M и каждый месяц вводит переменное количество строк. В ячейках от A13 до K13 у меня есть набор формул, которые я хотел бы перетащить или скопировать в последнюю строку, которая каждый раз вводится запросом Power в столбце M. Как бы я это сделал?

Самым простым решением было бы интегрировать формулы в Power Query. Вторым простейшим решением было бы разместить формулы в столбцах после последнего столбца запроса Power (Excel автоматически обработает расширение формул).

Frank Ball 12.08.2024 21:16

Не думаю, что я выразился ясно. У меня есть формулы Excel в ячейках от A13 до K13. Эти формулы (например, =IF(K13 = "-","-",ROW()). Есть ли способ использовать VBA для копирования этих формул до последней строки с помощью автозаполнения или чего-то подобного с помощью VBA?

Fred Blair 13.08.2024 02:22
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
3
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновление формул, соответствующих строкам таблицы Excel (ListObject)

  • В этом примере используется формула

    =COLUMN()*Table1[@Numbers]
    

  • Представьте, что формулы есть только в A2:K2. PowerQuery создал в таблице 10 строк данных. После запуска UdateFormulas формулы копируются.
  • Если PowerQuery теперь создает в таблице 5 строк данных, запуск UpdateFormulas очистит все формулы, кроме тех, которые находятся в первой строке, и скопирует их на 5 строк вниз.
Sub UpdateFormulas()

    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    
    Dim ws As Worksheet: Set ws = wb.Sheets("Sheet1")
    
    Dim lo As ListObject: Set lo = ws.ListObjects("Table1")
    If lo.ListRows.Count < 2 Then Exit Sub ' first row has already formulas
    
    ' Copy formulas and formats.
    With lo.DataBodyRange.EntireRow.Columns("A:K")
        .Resize(ws.Rows.Count - .Row).Offset(1).Clear ' keep first row
        .Rows(1).Copy .Cells
    End With

'    ' Copy only formulas (more efficient).
'    With lo.DataBodyRange.EntireRow.Columns("A:K")
'        .Resize(ws.Rows.Count - .Row).Offset(1).ClearContents ' keep first row
'        .Formula = .Rows(1).Formula ' copy as many as rows in table
'    End With

End Sub

Это идеально. Это отлично работает. Спасибо!!

Fred Blair 13.08.2024 16:13

Другие вопросы по теме