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索引

在每个单元格 Excel 中使用 VBA 而不是使用公式(索引和匹配)

使用 VBA 宏在 excel 行中搜索字符串的完全匹配

Excel - 需要从数组中搜索列表单元格的子字符串,无法获得索引/匹配工作吗?

VBA 代码填充 7 个相邻单元格中的索引匹配函数

在索引(匹配)数组中查找最小值 [EXCEL]