运行时错误1004复制公式数组

我在Excel电子表格的单元格B2中有以下数组公式:

{=IF(COUNT(IF(ISNUMBER(A30:A1000);IF(B30:B1000>A30:A1000-1;A30:A1000)))>=COUNT(IF(ISNUMBER(A30:A1000);COUNT(B30:B1000>A30:A1000-1;A30:A1000)));COUNT(IF(ISNUMBER(A30:A1000);COUNT(B30:B1000>A30:A1000-1;A30:A1000))))} 

现在我想使用下面的VBA代码将此代码复制到单元格A2:

 Sheets("Sheet1").Range("A2").FormulaArray = Sheets("Sheet1").Range("B2").Formula 

但是,当我使用此代码时,我得到运行时错误1004。

你有什么想法如何解决这个问题?

你的数组公式太长,不能像Range.FormulaArray属性一样传递。

你不需要重复所有的条件。 当您循环行30到1000时,如果第一个或第二个条件失败,则不会处理该周期的其余公式。 公式中的IF在第一个FALSE处停止处理。

 =IF(COUNT(IF(ISNUMBER(A30:A1000), IF(B30:B1000>A30:A1000-1, A30:A1000)))>=COUNT(B30:B1000>A30:A1000-1,A30:A1000),COUNT(B30:B1000>A30:A1000-1,A30:A1000)) 

现在代码工作得很好。

 With Worksheets("Sheet3") .Range("A2").FormulaArray = .Range("b2").Formula End With 

请注意,我无法使用分号作为系统列表分隔符来进行testing。 只能用我自己的系统的逗号。 VBA不喜欢.Formula , .FormulaR1C1或.FormulaArray属性中的EN-US区域设置。 如果你仍然有麻烦,使用debugging,打印看看.Formula是如何返回。 如果它包含分号,然后使用,

 With Worksheets("Sheet3") .Range("A2").FormulaArray = Replace(.Range("b2").Formula, Chr(59), Chr(44)) End With