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

时间:2017-09-05 19:25:32

标签: excel vba excel-vba

我尝试在VBA中使用fomulaArray函数并始终收到上述错误。我知道有25个字符是fomulaArray的限制,但它甚至没有给我一个错误,即fomular超出范围,我认为必定还有其他错误。

当我在Excel中的VBA之外使用时,fomular以其原始形式工作。

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))))))))))))))))"

我已经添加了双倍""无处不在,取而代之的是#34;;"用","。我现在无能为力导致错误1004。

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

1 个答案:

答案 0 :(得分:2)

尝试使用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))))))))))))))))"