使用 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
...
我正在尝试使用 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
...