Я уже написал код VBA, который добавляет новый столбец справа от последнего столбца. Я хочу скопировать формулу последнего столбца, и диапазон должен измениться с соответствующим столбцом. Например, я использую эту формулу в последнем столбце.

=$A$186+SUMPRODUCT($B$14:$B$160;C14:C160)+SUMIF($C14:C160;"<1")

И мне нужно изменить части кода на букву "C".

Я пробовал этот код, но он не работал

lastcolumn = Cells(1, Columns.Count).End(xlToLeft).Column
    With ActiveSheet
    .Cells(125, lastcolumn + 1).FormulaR1C1 = "=$A$186+SUMPRODUCT(" + Range("B14:B160").Address + ";" + .Cells(1, lastcolumn + 1).EntireColumn.Address + ")+SUMIF(" + .Cells(1, lastcolumn + 1).Address + " ;<1)"
    End With

Благодарность!!

0
user3940831 19 Авг 2014 в 13:07
Вы пробовали записать макрос?
 – 
Siddharth Rout
19 Авг 2014 в 13:09
Нет, я еще не пробовал, но когда я добавляю новый столбец, мне нужно изменить формулу для этого столбца, и мне нужно делать это динамически.
 – 
user3940831
19 Авг 2014 в 13:12
Формула не будет скопирована автоматически :) Попробуйте записать макрос, а затем измените этот код, чтобы скопировать и вставить формулу в новый столбец. И если вы все еще застряли, опубликуйте, пожалуйста, код, который вы пробовали, и где вы застряли :)
 – 
Siddharth Rout
19 Авг 2014 в 13:13
Пожалуйста, обновите код в вашем вопросе. А также упомяните, чего вы ожидали и что на самом деле получили.
 – 
Siddharth Rout
19 Авг 2014 в 13:21

1 ответ

Лучший ответ

Формула автоматически подстраивается под новое положение на листе при копировании. Поэтому вам следует просто скопировать его, а не переписывать.

 With ActiveSheet
  lastcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
  .Cells(125, lastcolumn).Copy Destination:=.Cells(125, lastcolumn + 1)
 End With

Приветствия

Axel

0
Axel Richter 19 Авг 2014 в 14:26
Спасибо за ответ :) Но это не сработало, или мне не удалось это сделать. Это не копирование формулы последней ячейки в этом столбце .. Спасибо за помощь.
 – 
user3940831
19 Авг 2014 в 15:32
Это работает следующим образом: все работает с активным листом. Он берет номер столбца этого столбца, который является самым правым в строке 1, а не пустым, в [lastcolumn]. Затем он копирует ячейку в строке 125 и столбце [lastcolumn] в ячейку в строке 125 и столбце [lastcolumn +1]. Это не то, что вам нужно?
 – 
Axel Richter
19 Авг 2014 в 15:47
Да, это так, но когда я нажимаю строку 125 и столбец [lastcolumn +1], формула ячейки не отображается.
 – 
user3940831
19 Авг 2014 в 16:02
Что ж, тогда вам нужно заняться отладкой. Какое значение хранится в lastcolumn? Это правильное значение? Если нет, то идет из строки 1, достаточно ли слева направо непустых ячеек? ...
 – 
Axel Richter
19 Авг 2014 в 16:14
Нашел баг :) Большое спасибо за помощь
 – 
user3940831
19 Авг 2014 в 16:21