FomulaArray导致运行时错误1004应用程序定义或对象定义的错误

我尝试使用VBA中的fomulaArray函数,并总是收到上述错误。 我知道有255个字符是fomulaArray的限制,但是它甚至没有给出错误,说明这个错误超出范围,我认为还有一些其他的错误。

当我在Excel的VBA之外使用它时,它的原始forms起作用。

Worksheets("Last Week").Range("AJ6:AJ1500").FormulaArray = "=IF(AND(F6="""",I6=""Projects""),MIN(IF((O7:O31=O6)*(NOT(G7:G31=""Yes""))*(NOT(G7:G31=""Not OK""))*(NOT(G7:G31=""postponed""))*(NOT(G7:G31=""""))*(NOT(H7:H31=""delayed""))*(NOT(F7:F31=""Failure"")),AJ7:AJ31)),IF(F6="""","""",IF(AH6>0,14,IF(AE6>0,13,IF(AC6>0,12,IF(AB6>0,11,IF(AA6>0,10,IF(Z6>0,9,IF(V6>0,8,IF(U6>0,7,IF(Y6>0,6,IF(X6>0,5,IF(W6>0,4,IF(T6>0,3,IF(S6>0,2,IF(R6>0,1,0))))))))))))))))" 

我加了两个“”到处replace“;” 与“,”。 我现在无能为力了,导致错误1004。

一旦我知道错误的原因,我会尝试将公式分成两个variables作为FormulaArrays限制的解决方法。

试试这个使用AGGREGATE的常规公式:

 Worksheets("Last Week").Range("AJ6:AJ1500").Formula = "=IF(AND(F6="""",I6=""Projects""),AGGREGATE(15,6,AJ7:AJ31/((O7:O31=O6)*(NOT(G7:G31=""Yes""))*(NOT(G7:G31=""Not OK""))*(NOT(G7:G31=""postponed""))*(NOT(G7:G31=""""))*(NOT(H7:H31=""delayed""))*(NOT(F7:F31=""Failure""))),1),IF(F6="""","""",IF(AH6>0,14,IF(AE6>0,13,IF(AC6>0,12,IF(AB6>0,11,IF(AA6>0,10,IF(Z6>0,9,IF(V6>0,8,IF(U6>0,7,IF(Y6>0,6,IF(X6>0,5,IF(W6>0,4,IF(T6>0,3,IF(S6>0,2,IF(R6>0,1,0))))))))))))))))"