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
。