【发布时间】:2015-04-04 20:00:47
【问题描述】:
我有一个在电子表格中运行良好的公式,但是当我尝试使用 VBA 自动创建公式时,我收到 1004 运行时错误。
我有一个 3 个阶段的过程,每个阶段都有一个开始和结束日期(所以 6 个单独的日期列)。此公式查看系列日期并使用 NETWORKDAYS 函数计算每个阶段之间的时间损失。
我认为解决此问题的简单方法是将我粘贴此公式的宏记录到单元格中,这将生成所需的 VBA 代码,然后我可以对其进行调整,但即使使用此方法也会导致 1004 错误。
我想知道问题是否出在公式的长度上?我尝试用& Chr(34) & Chr(34) & 替换双引号,并尝试将公式分配给变量。如果我使用 .value 而不是 .formulaR1C1 将其作为文本添加,或者在公式字符串的开头添加撇号,我可以让它工作。这似乎是一个导致问题的公式。非常感谢任何帮助。
电子表格单元格中的公式:
=IF(AND(I2="",J2="",K2="",L2=""),"",IF(AND(G2="",H2="",K2="",L2=""),"",IF(AND(G2="",H2="",I2="",J2=""),"",IF(AND(H2<>"",I2<>"",J2<>"",K2<>""),IF(NETWORKDAYS(H2,I2)-2+NETWORKDAYS(J2,K2)-2<1,"",NETWORKDAYS(H2,I2)-2+NETWORKDAYS(J2,K2)-2),IF(AND(H2<>"",I2<>""),IF(NETWORKDAYS(H2,I2)-2<1,"",NETWORKDAYS(H2,I2)-2),IF(AND(H2<>"",K2<>""),IF(NETWORKDAYS(H2,K2)-2<1,"",NETWORKDAYS(H2,K2)-2),IF(AND(J2<>"",K2<>""),IF(NETWORKDAYS(J2,K2)-2<1,"",NETWORKDAYS(J2,K2)-2),"")))))))
我在单元格中输入公式时宏记录的代码:
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-10]="""",RC[-9]="""",RC[-8]="""",RC[-7]=""""),"""",IF(AND(RC[-12]="""",RC[-11]="""",RC[-8]="""",RC[-7]=""""),"""",IF(AND(RC[-12]="""",RC[-11]="""",RC[-10]="""",RC[-9]=""""),"""",IF(AND(RC[-11]<>"""",RC[-10]<>"""",RC[-9]<>"""",RC[-8]<>""""),IF(NETWORKDAYS(RC[-11],RC[-10])-2+NETWORKDAYS(RC[-9],RC[-8])-2<1,"""",NETWORKDAYS(RC[-11],RC[-10])-2+NETWORKDAYS(RC[" & _
"8])-2),IF(AND(RC[-11]<>"""",RC[-10]<>""""),IF(NETWORKDAYS(RC[-11],RC[-10])-2<1,"""",NETWORKDAYS(RC[-11],RC[-10])-2),IF(AND(RC[-11]<>"""",RC[-8]<>""""),IF(NETWORKDAYS(RC[-11],RC[-8])-2<1,"""",NETWORKDAYS(RC[-11],RC[-8])-2),IF(AND(RC[-9]<>"""",RC[-8]<>""""),IF(NETWORKDAYS(RC[-9],RC[-8])-2<1,"""",NETWORKDAYS(RC[-9],RC[-8])-2),"""")))))))"
【问题讨论】:
-
请用代码格式修改...
-
另外,请指明您要在哪个单元格中粘贴此公式。
-
抱歉,我不知道如何对格式进行排序(这是我的第一篇文章),但感谢修复它的人。
-
公式进入哪个单元格无关紧要,问题在于VBA执行此操作的过程。我打算将公式放在包含 1,000 行数据的列中。
-
哦,但由于偏移量,公式可能引用无效范围等,这确实很重要。 Fwiw,我输入了公式,它在任何单元格中都会出错,所以问题似乎出在 formyla 字符串本身。无论如何,看起来你已经有了解决方案,干杯。