Макрос для автоматического заполнения до последних соседних ячеек

Я хочу, чтобы мой макрос заполнил мои формулы до конца листа. Каждый раз, когда я запускаю макрос, он останавливается в строке 13662, потому что это была последняя строка, когда я записывал ее, но последняя строка постоянно меняется. Есть ли способ сделать это? Столбцы, которые мне нужно сделать, это N, I, J, K и L. Любая помощь оценивается. См. Код ниже.

Sub Weekly_Expiring_Rebate_Report() ' ' Weekly_Expiring_Rebate_Report Macro ' ' Columns("A:A").Select Range(Selection, Selection.End(xlToRight)).Select With Selection .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("A:A").Select Range(Selection, Selection.End(xlToRight)).Select Columns("A:Z").EntireColumn.AutoFit Columns("N:N").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.NumberFormat = "General" Range("N1").Select ActiveCell.FormulaR1C1 = "Expiring Rebate Status" Range("N2").Select Columns("N:N").EntireColumn.AutoFit ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'Status IND'!C[-13]:C[-11],3,FALSE)" Range("N2").Select Selection.AutoFill Destination:=Range("N2:N13662") Range("N2:N13662").Select Columns("I:I").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("I2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],4)" Range("I2").Select Selection.AutoFill Destination:=Range("I2:I13662") Range("I2:I13662").Select Range("J2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],6)" Range("J2").Select Selection.AutoFill Destination:=Range("J2:J13662") Range("J2:J13662").Select Range("K2").Select ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],2)" Range("K2").Select Selection.AutoFill Destination:=Range("K2:K13662") Range("K2:K13662").Select Range("L2").Select ActiveCell.FormulaR1C1 = "=RIGHT(RC[-4],2)" Range("L2").Select Selection.AutoFill Destination:=Range("L2:L13662") Range("L2:L13662").Select Range("I1").Select ActiveCell.FormulaR1C1 = "EXP_YEAR" Range("K1").Select ActiveCell.FormulaR1C1 = "EXP_MONTH" Range("L1").Select ActiveCell.FormulaR1C1 = "EXP_DAY" Columns("I:L").Select Range("L1").Activate Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("J:J").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Range("L1").Select ActiveCell.FormulaR1C1 = "EXP_Month_Name" Columns("I:L").Select Range("L1").Activate Columns("I:L").EntireColumn.AutoFit Range("L2").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],Month!C[-11]:C[-10],2,FALSE)" Range("L2").Select Selection.AutoFill Destination:=Range("L2:L13662") Range("L2:L13662").Select ActiveWindow.SmallScroll Down:=-6 Columns("M:M").Select End Sub 

Похоже, что ваша проблема находится на пятой строке с конца.

Исходя из этого ответа, вы можете заменить:

Selection.AutoFill Destination:=Range("L2:L13662")

с

Selection.AutoFill Destination:=Range("L2:L" & ActiveSheet.UsedRange.Rows.Count)

Вот пример кода vba, который, как я думаю, будет работать для ваших целей.

 'Counts the number of rows in column "C" and then places 'concatenation formula in each adjacent cell (in column "D"). Range("D2:D" & Range("C" & Rows.Count).End(xlUp).Row).Formula = "=CONCATENATE(C2,"", "",B2)" 
  • VBA сумма диапазона с vba не работает?
  • Оптимизация кода макроса VBA / Excel (поиск дубликатов в большом листе)
  • Excel VBA: как петлять через книги в той же папке, используя данный код?
  • Итерация через книгу; Скопировать и вставить данные в новую книгу
  • Excel Macro. Вставка столбцов с макросом смещает другие столбцы с причудливым образом?
  • Как вернуть несколько элементов из нескольких значений поиска
  • Excel. Невозможно сравнить две таблицы.
  • Мне нужен VBA, чтобы написать «Output Example:», а затем переместить элементы в столбце I после текста «Output Example»
  • Excel VBA - копирование нескольких столбцов из 2 книг в 1 книгу
  • Как получить Sub Auto_Open () для работы с макросом в модуле класса
  • excel макросы для вставки нескольких столбцов данных под одной колонкой
  • Interesting Posts

    Использование массива диапазонов в VBA – Excel

    Найти наибольшее значение диапазона с критериями и возвращаемое значение другой ячейки

    Создайте excel на лету и отправьте электронное письмо с приложением

    Оптимизация текстового поиска VBA

    Ошибка выполнения при открытии файла excel

    Диапазон прохождения цикла в столбце B и установка формулы соответствия индекса в столбце E на основе значения в столбце B

    Форматирование строк в Excel

    Как объединить несколько документов Excel с помощью подключаемого модуля Tiny But Strong?

    Командная кнопка для открытия пути файла – файла, расположенного в той же кнопке ячейки, выровнена с

    Excel.Office.Interop возвращает double, даже если это целое число

    Функция VBA вызывает подменю VBA для печати массива на рабочий лист

    Способ изменения существующего VBA для передачи пустых значений при импорте с одного рабочего листа на другой?

    excel auto добавить строку на листе 2 каждый раз, когда диапазон на листе 1 добавлен

    Суммирование 2 столбцов на основе совпадающих заголовков, зависящих от критериев строки

    Ошибка подключения записей в файле .csv

    Давайте будем гением компьютера.