【问题标题】:how to get real formula from EXCEL formula如何从EXCEL公式中得到真正的公式
【发布时间】:2016-02-03 15:19:23
【问题描述】:
      | A   |  B
------|-----|--------
    1 |  x  |   1
    2 |  y  |   2
    3 |  z  |   3
    4 |  a  |   =B1*B2+B3

想象上面的东西是excel表格的一部分,B4有一个公式=B1*B2+B3

是否可以从excel公式中提取真正的公式?即在上面的例子中,真正的公式是a=x*y+z

我想做“转换”的原因是我有很多填充数据和公式的excel表,现在我想退出Excel并使用javascript进行计算,所以我想要真正的公式。

【问题讨论】:

  • 您确实意识到 x、y 和 z 只是数学中的标签。它们可以重命名为任何东西,并且具有相同的含义。所以z=x+ya=b+c 等相同。所以就像z=x+yz=B1+B2。 excel公式才是真正的公式。
  • 你想通过VBA获取公式???
  • 您可以将范围命名为:B1 = "x",B2 = "y"... 那么您的公式将是 =x*y+z
  • 您可以选择单元格并按F2 或直接查看 Excel 顶部的编辑器窗口。但是,如果您在多个地方使用此公式,则最好使用名称。
  • @ScottCraner 您的方法可行,但您必须使用名称而不是单元格引用重新编写所有公式。但这可能是一个解决方案

标签: excel vba excel-formula


【解决方案1】:

在定义了您所追求的目标之后,我认为 VBA 解决方案是可行的方法。既然你指出这是可以接受的,我已经为你提供了一个。

以下函数将返回字符串a=x*y+z,只要您的所有公式都完全按照您的示例中给出的方式设置,它将起作用。

Function ListRealFormula(rng As Range, ws As Worksheet) As String

Dim sFormula As String

sFormula = rng.Offset(, -1) & rng.Formula

With rng

    Dim d As Range
    For Each d In .DirectPrecedents

        Dim sValue As String, sAdd As String
        sAdd = d.Address(0, 0)
        sValue = ws.Range(sAdd).Offset(, -1).Value2
        sFormula = Replace(sFormula, sAdd, sValue)

    Next

End With

ListRealFormula = sFormula

End Function

你可以这样调用函数:

Sub GrabFormula()

Dim s As String

s = ListRealFormula(Sheet1.Range("B4"), Sheet1)
Debug.Print s

End Sub

【讨论】:

    【解决方案2】:

    @Wyatt,您的第一部分是正确的,但这还不够:单击“显示公式”后,您还需要“转到特殊,公式”(Ctrl+G,特殊,公式)。当您单击“显示公式”时,您现在可以复制/粘贴到某个文本编辑器中,并且您拥有所有公式,用于您的 Excel 工作表。

    【讨论】:

    • 另一个最适合作为评论的答案?
    猜你喜欢
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2020-07-24
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    相关资源
    最近更新 更多