У меня есть файл, в котором есть запрос мощности. Запрос начинается со строки столбца 13 столбца M и каждый месяц вводит переменное количество строк. В ячейках от A13 до K13 у меня есть набор формул, которые я хотел бы перетащить или скопировать в последнюю строку, которая каждый раз вводится запросом Power в столбце M. Как бы я это сделал?
Самым простым решением было бы интегрировать формулы в Power Query. Вторым простейшим решением было бы разместить формулы в столбцах после последнего столбца запроса Power (Excel автоматически обработает расширение формул).
Не думаю, что я выразился ясно. У меня есть формулы Excel в ячейках от A13 до K13. Эти формулы (например, =IF(K13 = "-","-",ROW()). Есть ли способ использовать VBA для копирования этих формул до последней строки с помощью автозаполнения или чего-то подобного с помощью VBA?
В этом примере используется формула
=COLUMN()*Table1[@Numbers]
A2:K2
. PowerQuery создал в таблице 10 строк данных. После запуска UdateFormulas
формулы копируются.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
Это идеально. Это отлично работает. Спасибо!!
Подсказка: как найти последнюю использованную ячейку.