在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中的有效公式,所以我怀疑有一个公式的问题。

可能错误在于你正在使用像[@ [空缺指令]]这样的不合格的结构化表格引用 – 尝试在表格名称前加前缀。

好吧,那里的时髦需求。 一种方法是执行以下操作。

  1. 进入菜单并select文件 – >选项,然后select公式选项卡。
  2. 选中R1C1参考样式的checkbox,然后单击确定以闪烁对话框。
  3. 在工作表上,从公式function区中select名称pipe理器。
  4. 在名称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引用。