Страницы: 1
RSS
Протянуть формулу в объединённых ячейках
 
Здравствуйте уважаемые форумчане, не могу добиться от кода выполнение команды. Необходимо протянуть формулу в диапозоне ячеек "R:T"до конца табличной части документа в excel, выделяет определённый диапазон, но документ всегда разный соответственно.   Всё получается если это просто таблица и ячейки не объедены, научился находить последнюю строку и протягивать формулу до ближайшей пустой ячейки, но вот сделать это в форме документа не получается. Может кто намекнёт как это решить, или куда копать? Заранее спасибо.
Код
Sub AutoFill_()
    Cells.Replace What:="*/ ", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Range("R34:T34").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.NumberFormat = "General"
    Range("R34:T34").Select
    ActiveCell.FormulaR1C1 = "=RC[-14]"
    Range("R34:T34").Select
    Selection.AutoFill Destination:=Range("R34:T43"), Type:=xlFillDefault
    Range("R34:T43").Select
End Sub
 
Немного подредактировал строку в конце.,:
Код
Range("R34").AutoFill Destination:=Range("R34:R" & Range("D34").End(xlDown).Row)
пишет ошибку: "Для этого все объединенные ячейки должны иметь одинаковый размер." Друзья, как обойти эту проблему, подскажите пожалуйста? Или  такое вообще невозможно сделать в таком виде документа  эксель?
 
Цитата
huchos написал:
пишет ошибку: "Для этого все объединенные ячейки должны иметь одинаковый размер."
Правильно пишет
Цитата
huchos написал:
как обойти эту проблему
1 способ: не использовать объединенные ячейки. Если объединяются в одной строке - можно раздвинуть столбец и поместить все в одну ячейку.
2 способ: если без объединенных никак нельзя, то есть подсказка: в объединенных ячейках нужный адрес (т.е. куда вставляется формула) - верхняя левая в объединенных.
Простое протягивание по объединенным - не есть хорошо, Вы уже в этом убедились :)
 
Спасибо за ответ. Без объединения никак, все адреса ячеек прописаны в другой программе. Список всегда разный по количеству строк.  Мыслю так: Объявить переменную = адрес последней строки и как-то тянуть формулу в конкретном диапазоне. Как вы считаете, на правильном я пути ? Ещё раз спасибо за отклик.
 
Цитата
huchos написал:
Мыслю так: Объявить переменную = адрес последней строки
Скорее всего это будет не последняя переменная ;) по причине зависимости результата от исходных данных, которые не определены :)
И не обязательно протягивать способом AutoFill
Range("A2:A100").="Formula такая-то"....
Но если Вы уже решили применять VBA, то и вычисления лучше делать в коде (если понимаете, что нужно сделать формулой и как она работает) :)
В Вашем примере понятно, что делает каждая строка кода, но не понятно зачем.
Без понимания общей задачи решать промежуточные задачи эффект нулевой будет.
 
Да там всё просто, из наименования берётся часть текста после "/" и вставляется в колонку "Код", это накладные от поставщика. Приходится каждый раз вручную это проделывать, а это не интересно. А VBA это интересно.
Страницы: 1
Наверх