运行时错误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