将公式中的值解释为Excel 2010中的公式
我有公式,我正在使用dynamic创build公式引用单独的电子表格中的数据。
例如,我有一个单元格中的公式返回=<path>\[<file>]<reference>
。 所以单元格R496
的返回值是string ='D:\Documents\[Filename.xls]sheet1'!$A$3
。
根据苹果派的答案 在一个单元格中使用单元格中的值作为单元格引用 ,我可以通过使用=INDIRECT(reference)
从另一个单元格的公式中引用值。 不幸的是,从另一个单元格解释完整的公式时似乎并不奏效。
在Microsoft Excel 2013及更高版本中 ,我将能够使用=FORMULATEXT()
,但不幸的是,该选项在Excel 2010中不可用。
如何使用单元格中的值作为Microsoft Excel 2010中的公式?
尝试这个:
=INDIRECT("'" & LEFT(CELL("filename",A487),FIND("[",CELL("filename",A487))-1) & "[" & $C496 & " " & $B496 & ".xls" & "]" & "sheet1'!$H$3")
正如你想要一个更一般的方法来评估一个公式。 你将需要使用这个UDF:
Function MyEvaluate(rng as range) MyEvaluate = rng.parent.Evaluate(rng.value) End Function
开头还是没有必要,但也不会伤害。
要返回单元格的公式而不是其值,请使用FORMULATEXT()
。 所以如果A1包含:
=A2 + A4
然后select一些细胞并input:
=FORMULATEXT(A1)
编辑#1:
如果您有Excel 2010,则可以使用以下UDF() :
Public Function MyFormula(r As Range) As String MyFormula = r(1).Formula End Function
编辑#2:
用户定义的函数(UDF)非常易于安装和使用:
- ALT-F11调出VBE窗口
- ALT-I ALT-M打开一个新的模块
- 粘贴东西,closuresVBE窗口
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除UDF:
- 如上所示调出VBE窗口
- 清除代码
- closuresVBE窗口
从Excel中使用UDF:
= myfunction的(A1)
要了解有关macros的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关UDF的具体信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
macros必须启用这个工作!