尝试运行适用于表的macros时发生1004错误

我有一个现有的表。 我想在它旁边添加一个新列,并在其中添加一个公式,以便公式添加一个新列并填充所有值。

这是一个两页的工作表。 表格1位于与我们正在处理的表格不同的另一个页面上,但具有从中绘制的主数据。

我logging了我用来制作这个的公式的一个macros,但是当我尝试运行它的时候,我得到了

运行时错误“1004”:应用程序定义或对象定义的错误。

我使用的代码如下:

Range("B2").Select ActiveCell.FormulaR1C1 = "=IF(INDEX(Table1,MATCH([@Listing],Table1[Property],0)," & _ "MATCH(""Status"",Table1[#Headers],0))=""for sale"",""seller""," & _ "IF(INDEX(Table1,MATCH([@Listing],Table1[Property],0)," & _ "MATCH(""Status"",Table1[#Headers],0))=""for lease"",""landlord""," & _ "IF(INDEX(Table1,MATCH([@Listing],Table1[Property],0)," & _ "MATCH(""Status"",Table1[#Headers],0))=""for sale or lease"",""seller / landlord""" & _ "X(Table1,MATCH([@Listing],Table1[Property],0)," & _ "MATCH(""Base Rent/Mo"",Table1[#Headers],0))>0,""landlord"",""seller""))))" Range("B1").Select 

我到目前为止检查过的东西:

  • 所有名称匹配(即表1是一个有效的名称,并且所有标题都正确命名)
  • 该公式工程exacly如我所愿,如果我只是键入它并点击“input”
  • 我在这里寻找类似的问题,最相似的似乎是一些问题,数据透视表,但解决scheme似乎不适用于我的问题

(我使用VBA的原因是,这是我尝试自动化的多步骤过程的一部分,以便从大量数据中运行复杂的报表。)

编辑 :我试过的其他修复:

  • 将主数据表移动到与我的“目标”表相同的工作表,以查看两个工作表是否在同一工作表上。 不行。

当你需要在引号内使用引号时,比如在"MATCH(""Status"",我猜你正在尝试输出Match("Status"试着用"MATCH("&Chr(34)&Status&Chr(34)

Chr(34)输出符号,否则返回MATCH(Status (不含引号)

有两个单独的问题。

首先,我logging了这个macros,很明显,Excel不会logging超过一定长度的公式。 这个限制大于407(我得到的自动捕获的最长公式),但是less于467个字符。 在这个Excel先生的post上讨论了类似的问题。 正如布鲁斯·韦恩(BruceWayne)指出的那样,这也是为什么“指数”的一部分不见了。

此外,正如R3uK所build议的,有必要从.FormulaR1C1切换到.Formula以使其正常工作。

最终的代码结束如下:

 Range("B2").Select ActiveCell.Formula = _ "=IF(INDEX(Table1,MATCH($A2,Table1[Property],0),MATCH(""Status"",Table1[#Headers],0))=""for sale"",""seller"",IF(INDEX(Table1,MATCH($A2,Table1[Property],0),MATCH(""Status"",Table1[#Headers],0))=""for lease"",""landlord"",IF(INDEX(Table1,MATCH($A2,Table1[Property],0),MATCH(""Status"",Table1[#Headers],0))=""for sale or lease"",""seller / landlord"",IF(INDEX(Table1,MATCH($A2,Table1[Property],0),MATCH(""Base Rent/Mo"",Table1[#Headers],0))>0,""landlord"",""seller""))))" Range("B3").Select