Изменить формулу СУММЕСЛИМН в VBA - Диапазоны

У меня есть очень большой файл Excel с множеством формул. Один из них ссылается на другой файл:

    =SUMIFS('T:\3Q2018\[TI -Sept 18.xlsm]Base CM1'!$C$5:$C$59;
'T:\3Q2018\[TI -Sept 18.xlsm]Base CM1'!$A$5:$A$59;
$C16;
'T:\3Q2018\[TI -Sept 18.xlsm]Base CM1'!$R$5:$R$59;
"DOLARES")

Что я хочу сделать, так это легко изменить путь. У меня есть одна и та же формула в нескольких ячейках, поэтому, если мне нужно ее изменить, я должен переходить к ячейке за ячейкой.

Например, предыдущая формула будет изменена следующим образом:

=SUMIFS('T:\4Q2018\[TI -Dec 18.xlsm]Base CM1'!$C$15:$C$49;
'T:\4Q2018\[TI -Dec 18.xlsm]Base CM1'!$A$15:$A$49;
$C16;
'T:\4Q2018\[TI -Dec 18.xlsm]Base CM1'!$R$15:$R$49;
"DOLARES")

Я должен изменить сентябрь на декабрь, 3Q2018 на 4Q2018 и диапазон.

Вот что я хочу сделать проще. Я пробовал с VBA и с другими формулами, но безуспешно.

Думал написать путь в одну ячейку и получить оттуда, но не знаю как.

Любая помощь?


person Pablo    schedule 31.01.2019    source источник
comment
Обычно помогает показать, что вы пробовали — вы должны быть в состоянии использовать Replace(yourFormulaHere, oldPath, newPath)   -  person Tim Williams    schedule 31.01.2019
comment
Я не могу заменить, потому что путь и диапазон меняются. Поэтому при замене показывает ошибку   -  person Pablo    schedule 31.01.2019
comment
Так что замените диапазон тоже. У вас больше шансов получить полезные предложения, если вы точно покажете, какой тип обновления вам нужно сделать, включая образец формулы до и после.   -  person Tim Williams    schedule 31.01.2019
comment
Я бы просто выбрал Crtl+H и заменил 3Q2018 на 4Q2018 в каждой ячейке и то же самое для диапазона. Это всегда работало для меня...   -  person MrZH6    schedule 31.01.2019


Ответы (1)


Что-то вроде этого:

Dim c as range, f
'loop over selected cells
for each c in selection.cells
    f = c.formula
    f = Replace(f, "-Sept", "-Dec")
    f = Replace(f, "3Q2018", "4Q2018")        
    '...replace ranges
    c.formula = f
next c
person Tim Williams    schedule 31.01.2019