在vba 2010中声明公式为variables
为什么我不能这样做,所以经过多年的search线程,我发了我的第一个问题。
我有公式存储在工作簿中的表格。 该表被命名为调整。 在同一工作簿中的另一个工作表上,我正在查找基于贷款编号的公式。 在复制工作表并将其保存为单独的文档之前,我想用查找的公式replace查找公式,而不是将其计算的值作为活动公式。
当前在单元格E6中的查找公式为:=(INDEX(调整,MATCH(贷款编号,调整[贷款编号],0),COLUMN(调整[GPR Adj])))
正在引用的公式是:
=(IF(COM_VAC_RPTD / COM_GPR_RPTD)> [空缺假设]),假(FALSE))),0 ,(COM_RENTS_ACT * COM_NRSF-COM_GPR_ACT))
我想用它正在查找的单元格中的公式replace索引/匹配公式。
这是我正在尝试使用的代码。
Dim GPR As String GPR = [INDEX(Adjustments,MATCH(Loan_No,Adjustments[Loan No],0),COLUMN(Adjustments[GPR Adj]))].Formula Range("E6").Formula = GPR
当我使用这个,我得到一个运行时错误'1004':应用程序定义或对象定义的错误。
我已经尝试将评估应用程序更改为.Value,但是这给了我两个公式的最终价值。 也似乎如果我有Excel 2013,我可以使用[FormulaText(GPR)]。
我试图避免做一个副本和pasteformulas,因为有大约25个单元格,我想要replace,我不想减慢macros,因为这只是其中一个运行的子。 这似乎应该是一个简单的答案,但我还没有绊倒它。 任何帮助表示赞赏!
这应该工作,如果它是单元格E6中的有效公式,所以我怀疑有一个公式的问题。
可能错误在于你正在使用像[@ [空缺指令]]这样的不合格的结构化表格引用 – 尝试在表格名称前加前缀。
好吧,那里的时髦需求。 一种方法是执行以下操作。
- 进入菜单并select文件 – >选项,然后select公式选项卡。
- 选中R1C1参考样式的checkbox,然后单击确定以闪烁对话框。
- 在工作表上,从公式function区中select名称pipe理器。
- 在名称pipe理器中定义名为“ToMyLeft”的名称,并在“引用”框中input= Sheet1!RC [-1]
现在你已经定义了一个相对的名字,它总是指向一个单元格的左边的单元格! 放弃时髦。 花一些时间来沉浸其中。
现在你可以写这样的公式
=ADDRESS(ROW(ToMyLeft),COLUMN(ToMyLeft))
这将给单元格地址左边的单元格的地址。 所以在单元格F7中执行时返回$ F $ 6。 这应该给你一个终极配方的家的钩。 你仍然需要一些VBAfunction来执行它,虽然如此。
Option Explicit Function FunkyIndirectFunctionEval(ByVal sCellAddress As String) Dim ws As Excel.Worksheet Set ws = ActiveSheet '<--- if you workbook spans several sheets you'll need to handle the sheets, second param? Dim rng As Excel.Range Set rng = ws.Range(sCellAddress) Dim vEval As Variant FunkyIndirectFunctionEval = Application.Evaluate(rng.Formula) End Function
但是,这会产生公式上下文的问题,因为从上下文中剥离了公式。 我没有试过这个,我想说成功25%的机会!
不要忘记在“选项”对话框中将RC引用更改回A1引用。