繁体   English   中英

Excel-将基于单元格的公式替换为实际的单元格值

[英]Excel - Substitute a Cell-Based Formula to the Actual Cell Values

有没有一种方法可以转换基于单元格的公式,以便将该公式中的单元格替换为其实际值? 没有自动完成?

这是一个示例,可以说公式是:

=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)

请注意,这会将单元格引用解析为值,但不会将函数解析为值。 要解析单个功能,您需要分解功能字符串并使用Application.Evaluate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM