Ответ Чарльза Претория был полезен. После исправления двух проблем Макрос работал на меня. Я добавил комментарии, где я изменил сценарий.
Обратите внимание, что макрос нужно запускать так часто, как вы хотите, чтобы были сделаны замены. Можно было бы выполнить все замены, но, возможно, должна остаться последняя ссылка на ячейку.
Sub CombineFormula()
Dim FormulaCell As Range
Set FormulaCell = ActiveCell
Dim StrTemp As String
StrTemp = FormulaCell.Formula
'Do not replace the $ sign in absolute addresses.
'It may be used in text, e.g. in a formula like ="US$"&A1
'Instead, use different adressing modes in the replacement loop
'! StrTemp = Replace(StrTemp, "$", "")
Dim RangeRef As Range
On Error Resume Next
Dim ReplaceBy As String
For Each RangeRef In FormulaCell.Precedents.Cells
'Add in parentheses to maintain correct order of evaluation, e.g. in cases of addition before multiplication
ReplaceBy = "(" + Replace(RangeRef.Formula, "=", "") + ")"
'The order of the following is important
'Replace absolute ranges first, because A$1 is also contained in $A$1
StrTemp = Replace(StrTemp, RangeRef.Address(True, True), ReplaceBy)
StrTemp = Replace(StrTemp, RangeRef.Address(True, False), ReplaceBy)
StrTemp = Replace(StrTemp, RangeRef.Address(False, False), ReplaceBy)
StrTemp = Replace(StrTemp, RangeRef.Address(False, True), ReplaceBy)
Next
FormulaCell.Value2 = StrTemp
End Sub