Страницы: 1
RSS
Протягивание формулы макросом
 
Добрый день!
Подскажите, пожалуйста, как протянуть формулу макросом до конца таблицы?
Код
Sub Макрос1()
    ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
    Range("W2").Select
    Selection.AutoFill Destination:=Range("W2:W26712")
    Range("W2:W26712").Select
End Sub

Записал макрос, а когда вставляю другую таблицу (больше или меньше по размерам), он либо перетягивает, либо не дотягивает формулу.

P.S. Мои первые шаги в макросонаписании, так что прошу простить за глупые вопросы.)
Изменено: Donaldack - 23.01.2017 14:31:11
 
1. Код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте свой пост.
2. Зачем формула, если есть макрос? Вычисляйте всё в коде и заносите в ячейки уже результат.
 
1. Подскажите, пожалуйста, какой код вы имеете ввиду? На какой вкладке посмотреть эту кнопку?
2. Нужно сделать ряд операций с таблицей, таких как (добавить столбец, написать формулу, протянуть ее до конца таблицы, потом заменить на значения, добавить автофильтр и закрепить верхнюю строку), макрос записываю на все эти действия, но только тот момент что формулу протягивает на определенное количество ячеек, а не до конца таблицы мне не понятен.

Просто сюда написал, именно то что не понятно
 
1. Код, который Вы написали: Sub Макрос1() ... Где искать кнопку - я Вам показал на рисунке.
И не нужно меня цитировать: я же обошёлся без цитаты понятно без неё?
 
Чтобы выделить всю таблицу независимо от размера используйте код:
Range(selection, selection.end(xltoright)).select
 Range(selection, selection.end(xldown)).select
 
Спасибо, буду знать. Устранил уже
 
FIREguard, спасибо. Что-то не работает, или вы меня не правильно поняли. Мне нужно протянуть формулу с первой строки столбца вниз, до конца таблицы. А когда размер таблицы меняется, протягивание не происходит должным образом.
 
Потому, что у вас фиксирована задан range с w2 до w26712.
Попробуйте так:

activecell.formular1c1 = "=rc[-2]+rc[-1]"
Activecell.select
Selection.copy
Range(selection, selection.end(xldown).select
Selection.pastespecial paste:=xlpasteformulas, operation:=xlnone, _
 Skipblanks:= false, transpose:= false


P.s. Чертова автозамена...
Изменено: FIREguard - 23.01.2017 16:34:41
 
FIREguard, я вот сейчас ваш код попробовал вставить, уже в полный макрос все посчиталось как надо, но выдало ошибку.

"Метод AutoFill из класса Range завершен неверно".

Код
Sub Макрос1()
    ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
    Range("W2").Select
    Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
End Sub


Или может я неправильно подставил, не в то место?
Страницы: 1
Наверх