| 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进行计算,所以我想要真正的公式。
答案 0 :(得分:4)
在确定了你所追求的是什么之后,我认为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
答案 1 :(得分:2)
@Wyatt,你的第一部分是正确的,但这还不够:一旦你点击了“显示公式”,你还需要“转到特殊,公式”(Ctrl + G,特殊,公式)。当您单击“显示公式”时,您现在可以复制/粘贴到某个文本编辑器中,并且您拥有Excel表格中使用的所有公式。