Ответ 1
Если формулы идентичны, вы можете использовать Find и Replace с помощью Match entire cell contents
checked и Look in: Formulas
. Выберите диапазон, перейдите в "Найти и заменить", введите свои записи и "Заменить все".
Или вы имеете в виду, что есть несколько формул с этой же формой, но разные ссылки на ячейки? Если это так, то один способ пойти - это регулярное выражение и замена. Регулярные выражения не встроены в Excel (или VBA), но могут быть доступны через библиотеку Microsoft VBScript Regular Expressions.
Следующая функция обеспечивает необходимую совместимость и возможность замены. Его можно использовать в подпрограмме, которая будет идентифицировать ячейки с формулами в указанном диапазоне и использовать формулы в качестве входных данных для функции. Для строк формул, которые соответствуют шаблону, который вы ищете, функция будет производить формулу замены, которая затем может быть записана обратно на рабочий лист.
Function RegexFormulaReplace(formula As String)
Dim regex As New RegExp
regex.Pattern = "=\(\(([A-Z]+\d+)-([A-Z]+\d+)\)/([A-Z]+\d+)\)"
' Test if a match is found
If regex.Test(formula) = True Then
RegexFormulaReplace = regex.Replace(formula, "=(EXP((LN($1/$2)/14.32))-1")
Else
RegexFormulaReplace = CVErr(xlErrValue)
End If
Set regex = Nothing
End Function
Чтобы функция работала, вам нужно добавить ссылку на библиотеку Microsoft VBScript Regular Expressions 5.5. На вкладке Developer
основной ленты выберите VBA
, а затем References
с главной панели инструментов. Прокрутите страницу вниз, чтобы найти ссылку на библиотеку и установите флажок рядом с ней.