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