使用 VBA 插入数组公式

Inserting Array Formula with VBA

我正在尝试使用 VBA 插入数组公式,但我一直收到错误消息

“无法设置范围 class 的公式数组 属性”

Sub Insert()

Range("J2").Select
Selection.FormulaArray = "=IFERROR(INDEX('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C, SMALL(IF(A2='Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$B:$B, ROW('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C)-MIN(ROW('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C))+1, ""), ROW(A1))),"")"

End Sub

我知道最大字符数为 255,所以我将公式缩短为以下,但我得到了同样的错误。

Sub Insert()

Range("J2").Select
Selection.FormulaArray = "=IFERROR(INDEX('C:\[OrderLinesList.xlsx]Sales'!$C:$C, SMALL(IF(A2='C:\[OrderLinesList.xlsx]Sales'!$B:$B, ROW('C:\[OrderLinesList.xlsx]Sales'!$C:$C)-MIN(ROW('C:\[OrderLinesList.xlsx]Sales'!$C:$C))+1, ""), ROW(A1))),"")"

End Sub

有人知道我哪里错了吗?提前致谢!

请尝试更改:

Selection.FormulaArray = "=IFERROR(INDEX('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C, SMALL(IF(A2='Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$B:$B, ROW('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C)-MIN(ROW('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C))+1, ""), ROW(A1))),"")"

与:

Range("J2").FormulaArray = "=IFERROR(INDEX('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C, SMALL(IF(A2='Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$B:$B, ROW('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C)-MIN(ROW('Z:\Customer Operations21\Tools\[OrderLinesList.xlsx]Sales'!$C:$C))+1, """"), ROW(A1))),"""")"

写VBA的公式只需要双引号,不需要Selection...