我收到运行时错误1004:无法设置Range类的FormulaArray属性。我一直在研究这个问题,但找不到解决方案。不得超过255个字符。我也尝试将公式放在新的表格列中,所以也许这是问题的一部分。
问题可能出在“ Rows(R8C:RC)”部分吗?我正在尝试使其成为一个相对引用,以便它将引用该公式所在的表吗?
当我“ debug.print Trans_ID”时,我得到了正确的代码,但也许R8C:RC并未更改为正确的单元格引用。
Dim Trans_ID As String
'AccountNumber is equal to 1003
Trans_ID = "=IFERROR(INDEX(Journal,SMALL(IF(L_" & AccountNumber & _
"=Journal[Acct. '#],Journal[Trans ID],""""),ROWS(R8C:RC)),MATCH(Ledger_" & _
AccountNumber & "[[#Headers],[Trans ID]],Journal[#Headers],0)),"""")"
Worksheets("Ledger").ListObjects(NewTableName.Name).ListColumns( _
"Trans ID").DataBodyRange.FormulaArray = Trans_ID
这将返回一个数字。当我在不使用VBA的情况下输入公式时,它会起作用。
答案 0 :(得分:0)
如果您尝试将数组公式写入多个单元格,则相对引用不会更新。即使使用更简单的数组公式,也可以重现您的错误。如果您将公式写入第一个单元格,Range.FillDown
应该可以使用。
With Worksheets("Ledger").ListObjects(NewTableName.Name).ListColumns("Trans ID").DataBodyRange
.Cells(1).FormulaArray = Trans_ID
.FillDown
End With
如果您已将表格中的公式设置为自动填充,则.FillDown
是多余的。