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

问题描述 投票:-2回答:1

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

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.我需要在代码中更改数组公式吗?

arrays excel vba excel-vba
1个回答
0
投票

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

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

尝试一下,看看是否能解决您的问题。答案假定当您手动将其放在工作表上时,通过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
© www.soinside.com 2019 - 2024. All rights reserved.