有没有办法转换基于单元格的公式,以便公式中的单元格替换为它们的实际值?没有自动完成?
以下是一个例子,我们只说公式为:
=A1+A2+B6
和...
A1=2, A2=5 and B6=21.
如何从这个转变我的公式..
=A1+A2+B6
......对此...
=2+5+21
...没有手动操作?我相信有办法。
谢谢。
答案 0 :(得分:0)
这适用于所有公式引用都在同一张纸上的简单情况。我使用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)
请注意,它解析了对值的单元格引用,但它不会将函数解析为值。要解决各个功能,您需要打破功能字符串并使用Application.Evaluate
。