我有一张现有的桌子。我想在它旁边添加一个新列,并在其中添加一个公式,以便公式添加一个新列并填充所有值。
这是一个两页的工作表。 Table1位于我们正在使用的表之外的另一页上,但具有从中抽取的主数据。
我录制了一个我用来制作它的公式的宏,但是当我尝试运行它时,我得到了
运行时错误'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
到目前为止我检查过的事情:
(我之所以使用VBA,是因为这是多步骤过程的一部分,我正在尝试自动化,以便从大量数据集中运行复杂报表变得更加简单。)< / p>
编辑:我尝试了其他修补程序:
答案 0 :(得分:1)
如果您需要在"MATCH(""Status"",
中的引号内使用引号,我认为您尝试输出Match("Status"
,请尝试使用"MATCH("&Chr(34)&Status&Chr(34)
Chr(34)
输出"
符号。否则它将返回MATCH(Status
(不带引号)
答案 1 :(得分:0)
有两个不同的问题。
首先,我正在录制宏,显然,Excel不会正确记录超过一定长度的公式。此限制大于407(我自动捕获的最长公式),但短于467个字符。讨论了类似的问题on this Mr. Excel post。这也是为什么&#34; INDEX&#34;正如BruceWayne指出的那样,他失踪了。
此外,有必要从.FormulaR1C1
切换到.Formula
以使其正常工作,正如R3uK所建议的那样。
最终代码最终如下:
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