A resposta de Charl Pretorius foi útil. Depois de corrigir 2 problemas, o Macro funcionou para mim. Eu adicionei comentários onde mudei o script.
Observe que a macro precisa ser executada com a freqüência que você deseja que as substituições sejam feitas. Seria possível realizar todas as substituições, mas talvez a última referência a uma célula permanecesse.
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