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

时间:2017-12-27 07:47:23

标签: arrays excel vba excel-vba

以前我有一个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。 我在代码公式的代码中需要改变什么?

1 个答案:

答案 0 :(得分: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