用VBA插入数组公式

问题描述

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

“无法设置Range类的FormulaArray属性

Sub Insert()

Range("J2").Select
Selection.FormulaArray = "=IFERROR(INDEX('Z:\Customer Operations\2021\Tools\[OrderLinesList.xlsx]Sales'!$C:$C,SMALL(IF(A2='Z:\Customer Operations\2021\Tools\[OrderLinesList.xlsx]Sales'!$B:$B,ROW('Z:\Customer Operations\2021\Tools\[OrderLinesList.xlsx]Sales'!$C:$C)-MIN(ROW('Z:\Customer Operations\2021\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,"")"

End Sub

有人知道我要去哪里吗?预先感谢!

解决方法

请尝试更改以下内容:

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

具有:

Range("J2").FormulaArray = "=IFERROR(INDEX('Z:\Customer Operations\2021\Tools\[OrderLinesList.xlsx]Sales'!$C:$C,""""),"""")"

从VBA编写公式时,只需将双引号加倍即可,而无需使用Selection ...