【发布时间】:2019-10-08 06:35:32
【问题描述】:
我有一个公式
-
=IF(K2="Missed KPI",IF(J2<>"null","Entry done after approx. "&ROUNDDOWN(NETWORKDAYS(F2,J2)-1-MOD(F2,1)+MOD(J2,1),0)&" work days"),IF(K2="Milestone Pending-Missed",IF(F2<>"null","Entry
-after"&ROUNDDOWN(NETWORKDAYS(F2,NOW())-1-MOD(F2,1)+MOD(NOW(),1),0)&" work days ago"," "),IF(K2="NA","Entry yet to be done-Order Not Raised- "&H2," ")))
这里: K2 , J2, F2, H2 是单元格名称
当我使用这个公式而不编写宏时,它可以正常工作。我有许多其他类似的公式都可以在没有 MACRO 的情况下正常工作。 当我记录一个宏(不是在 VBA 中编码)时,当我尝试运行宏时,它会给我一个编译时间 - 语法错误。
下一行是 VBA 代码(在录制 MACRO 期间创建),用于上述公式。
Selection.FormulaR1C1 = _
"=IF(RC[-2]=""Missed KPI"",IF(RC[-3]<>""null"",""Entry done after approx. ""&ROUNDDOWN(NETWORKDAYS(RC[-7],RC[-3])-1-MOD(RC[-7],1)+MOD(RC[-3],1),0)&"" work days""),IF(RC[-2]=""Milestone Pending-KPI Missed"",IF(RC[-7]<>""null"",""Entry - after ""&ROUNDDOWN(NETWORKDAYS(RC[-7],NOW())-1-MOD(RC[-7],1)+MOD(NOW(),1),0)&"" work days ago"","" ""),IF("& _
""NA"",""CCD yet to be done-Order Not Raised- ""&RC[-5],"" "")))
"
正如您所见,VBA 添加了一些额外的双引号,并且在录制 MACRO 后,代码中的一些文本也丢失了。
请帮助我解决问题,因为我被困在这里并且不知道为什么我的公式不起作用。
对于一个小的单行公式,它工作正常,但是一旦公式移动到 VBA 中的另一行(在录制 MACRO 之后)就会出现问题。
对于这个公式 -
=IF(K2="Approaching Deadline",(24-(NETWORKDAYS(F2,NOW())-1-MOD(F2,1)+MOD(NOW(),1))*24)/24," ")
录制的VBA版本(VBA代码单行)
Selection.FormulaR1C1 = _
"=IF(RC[-1]=""Approaching Deadline"",(24-(NETWORKDAYS(RC[-6],NOW())-1-MOD(RC[-6],1)+MOD(NOW(),1))*24)/24,"" "")"
一切正常。
我尝试使用引号和多行换行符。还是不行。
【问题讨论】:
标签: excel vba excel-formula