繁体   English   中英

如何通过VBA将数组公式插入Excel?

[英]How to insert array formula into Excel via VBA?

以前,我有一个 Excel VBA 代码,可以为表中的整个列执行从一张工作表到另一张工作表的索引和匹配公式。 代码示例如下:

With Me.Range("table1[Description]")
    .Formula = "=IFerror(INDEX(table2,MATCH(B4,table2[Asset No],0),2),"""")"
    .Value = .Value
 End With

现在我想在工作表中添加一个数组函数,所以我复制了公式并将旧公式替换为数组以及其他修改。

Sub refresh()

With Me.Range("table1[Last Service Date]")
    .FormulaArray = "=LARGE(IF(table2[[#All],[Asset No]]=[@[Asset No]],table2[[#All],[Entry Date]]),2)"
    .Value = .Value
End With

End Sub

但是当我尝试测试代码时,我不断收到错误消息 400。我需要在数组公式的代码中更改什么?

在代码中使用 Me 有什么意义? 您是否已将该代码放在工作表模块中? 我建议您将此代码移到像 Module1 这样的标准模块中,并用正确的工作表引用替换 Me 关键字。 否则,我希望您有充分的理由将该代码放入工作表模块中。

此外,您应该将数组公式放在所需列中表格的第一个单元格中,由于数据格式为 Excel 表格,因此整列将自动填充公式。 如果没有,您可以使用 AutoFill 属性将公式向下填充到行中。

尝试一下,看看是否可以解决您的问题。 答案假定您尝试通过 VBA 放置的公式在您手动将其放在工作表上时效果很好。

With Me.Range("table1[Last Service Date]").Cells(1)
    .FormulaArray = "=LARGE(IF(table2[[#All],[Asset No]]=[@[Asset No]],table2[[#All],[Entry Date]]),2)"
    .Value = .Value
End With

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM