
Известны ли кому-нибудь методы или макросы, позволяющие преобразовать формулу в косвенную?
Например, все формулы на моем листе в настоящее время записаны так:
=SUM(Sheet2!A1:A10),
есть ли способ быстро изменить это на INDIRECT
функцию вроде:
=SUM(INDIRECT("'Sheet2'!"&"A1"):Sheet2!$A$10)
Изменить одну формулу несложно, но для сотен формул, каждая из которых содержит 3-4 ссылки на другие листы, исправление займет очень много времени.
Проблема возникает из-за того, что я суммирую диапазон, однако каждый раз, когда я вставляю новую строку сверху, формула не ссылается на правильные ячейки. Пытаюсь найти способ написать лучшую формулу, чтобы мне не приходилось вручную менять номер строки каждый раз.
решение1
Этот макрос поможет вам найти и заменить формулу на листе.
Sub FindReplaceFormula()
Cells.Replace What:="=SUM(Sheet2!A1:A10)", Replacement:= _
"=SUM(INDIRECT("'Sheet2'!"&"A1"):Sheet2!$A$10)", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
При необходимости вы можете скорректировать ссылки на ячейки в формуле.