excel vba索引匹配数组以分隔文件
Posted
技术标签:
【中文标题】excel vba索引匹配数组以分隔文件【英文标题】:excel vba index match array to separate file 【发布时间】:2019-10-23 08:19:13 【问题描述】:我记录了一个索引匹配数组公式(多个条件列),当我播放它时,它失败了......
“运行时错误 1004:无法设置 Range 类的 FormulaArray 属性”
使用 excel vba,我可以编写引用同一工作簿中的表或工作表的索引匹配数组公式,但是当我尝试引用保存在单独文件中的大型数据库表时,我收到 1004 中提到的错误标题。
'我可以执行此索引匹配数组公式,它引用同一工作簿中的工作表
Selection.FormulaArray = "=Index('GL - Chart of Accts Listing'!R6C1:R5000C1,Match(RC3&""*Salary*"",'GL - Chart of Accts Listing'!R6C1:R5000C1&'GL - Chart of Accts Listing'!R6C2:R5000C2,0))"
'最终结果是:
'=INDEX('GL - Chart of Accts Listing'!$A$6:$A$5000,MATCH($C12&"*Salary*",'GL - Chart of Accts Listing'!$A$6:$A$5000&'GL - Chart of Accts Listing'!$B$6:$B$5000,0))
'然而,这个公式给了我运行时 1004 错误,即使它正是我记录它的方式。
Selection.FormulaArray = "=INDEX('[All AP Transactions by Account Number - CMS Table GLSBAP.xlsm]Data File'!R1C5:R47948C5,MATCH(RC4&RC14,'[All AP Transactions by Account Number - CMS Table GLSBAP.xlsm]Data File'!R1C2:R47948C2&'[All AP Transactions by Account Number - CMS Table GLSBAP.xlsm]Data File'!R1C10:R47948C10,0))"
非常感谢任何帮助。谢谢,SR
【问题讨论】:
【参考方案1】:你在运行之前选择了正确的范围吗?Selection.FormulaArray = "=INDEX('[All AP Transactions by Account Number...
【讨论】:
是的,我使用 ctrl-shift-enter 记录了 excel 公式,告诉 excel 这是一个数组公式而不是标准公式,并且得到了有效的结果。当我尝试运行 vba 代码时,它才成为一个问题。谢谢 好的,所以当您运行宏时,您会看到类似myrange.select
?
它更像 Range(Cells(TRow, DCol), Cells(BRow,DCol)).select 我根据标准顶行 (TRow)、底行 ( BRow) 和数据列 (DCol)。我实际上并没有选择它。它只是 Range(...).FormulaArray。我已经测试并发现使用 .select 后跟 selection.FormulaArray 不会改变错误。谢谢-SR以上是关于excel vba索引匹配数组以分隔文件的主要内容,如果未能解决你的问题,请参考以下文章
在每个单元格 Excel 中使用 VBA 而不是使用公式(索引和匹配)