如果使用ctrl sht enter:
输入,则此数组公式可以正常工作={IF(ROWS(A$7:A7)>A$4,"",IF(SUMPRODUCT((consumers=$A$6)*(data=A$5)*(data=A$5<>""))>0,INDEX
(employees,SMALL(IF(((consumers=$A$6)*(data=A$5)*(data=A$5<>"")),COLUMN(Data!$B$2:$AC$2)-COLUMN
(Data!$B$2)+1),ROWS(A$7:A7)))))}
我做了一些研究,并且读到如果我想在VBA中使用这个公式,我将不得不使用R1C1 notatation ...所以这就是我到目前为止:
Sub frmarry()
Range("y28").Select
Selection.FormulaArray = "=IF(ROWS(R28C25:R28C25)>R26C25,"",IF(SUMPRODUCT((consumers=R27C25)*
(data=R24C7)*(data=R24C7<>""))>0,INDEX(staff,SMALL(IF(((consumers=R27C25)*(data=R24C7)*
(data=R24C7<>"")),COLUMN(Data!$R2C2:$R2C29)-COLUMN(Data!R2C2)+1),ROWS(R28C25:R28C25)))))"
End Sub
现在,当我运行例程时,我得到一个标志:
'unable to set the FormaulaArray property of the Range class'
如果我选择debug,它会突出显示上面的arrayformula。
我只是使用excel设置将我的公式设置为R1C1表示法,因此可能在转换中出现了误入歧途的情况。由于我不熟悉R1C1表示法,因此我希望有人能更熟悉R1C1,这可以帮助我解决这个问题,或者指出我的方向,这样我就可以解决这个VBA问题。
感谢。
答案 0 :(得分:2)
试试这个。这工作
Sub frmarry()
Range("Y28").FormulaArray = _
"=IF(ROWS(R28C25:R28C25)>R26C25,"""",IF(SUMPRODUCT((consumers=R27C25)*" & _
"(data=R24C7)*(data=R24C7<>""""))>0,INDEX(staff,SMALL(IF(((consumers=R27C25)" & _
"*(data=R24C7)*(data=R24C7<>"""")),COLUMN(Data!R2C2:R2C29)-COLUMN(Data!R2C2)" & _
"+1),ROWS(R28C25:R28C25)))))"
End Sub