Excel – 将基于单元格的公式replace为实际单元格值

有没有办法转换基于单元格的公式,以便公式中的单元格replace为其实际值? 没有自动完成?

下面是一个例子,我们只需要说公式是:

=A1+A2+B6 

和…

 A1=2, A2=5 and B6=21. 

我怎样才能把我的公式从这个..

 =A1+A2+B6 

…这个…

 =2+5+21 

…没有手动做? 我相信有一个办法。

谢谢。

这应该适用于所有公式引用位于同一张纸上的简单情况。 我使用DirectPrecedents范围,但是这限制了您在同一工作表中的先前单元格。

在我的例子中,我有这个在Sheet1

  | A | --+---------------------------------------------+ 1 | 2 | 2 | 4 | 3 | 6 | 4 | =Sheet1!A3+(A1^Sheet1!A1)+Sheet1!A2/(A3+A2) | 5 | =SUM(A1,A2,A3)/COUNT(A1,A2,A3) | 

请注意包含具有命名的工作表前缀的单元格的单元格引用的组合。

我使用这个VBA代码:

 Option Explicit Sub Test() PrintResolvedFormula Range("A4") PrintResolvedFormula Range("A5") End Sub Sub PrintResolvedFormula(rng As Range) If rng.HasFormula Then Dim formula As String formula = rng.FormulaR1C1 Dim cel As Range For Each cel In rng.DirectPrecedents.Cells formula = Replace(formula, cel.Worksheet.Name & "!", vbNullString) formula = Replace(formula, cel.Address(False, False, xlR1C1, False, rng), cel.Text) Next cel Debug.Print formula Else Debug.Print rng.Value End If End Sub 

并得到这个输出:

 =6+(2^2)+4/(6+4) =SUM(2,4,6)/COUNT(2,4,6) 

请注意,parsing单元格对值的引用,但它不解决函数的值。 要解决个别函数,你需要分解函数string并使用Application.Evaluate