以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] Excell 单元格数组公式设置  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=105881)

--  作者:jweishan
--  发布时间:2017/8/28 16:17:00
--  [求助] Excell 单元格数组公式设置

错误提示:
不能设置类 Range 的 FormulaArray 属性

    Rg = Ws.Range("G3")
    Rg.FormulaArray = _
    "=IF(RC[-2]=""部门计划"",(""C_"" & VLOOKUP(RC[-3],部门范围,2) & RIGHT(TEXT(RC[-6],""0000""),2) & RIGHT(TEXT(RC[-5],""00""),2) & RIGHT(TEXT(RC[-4],""00""),2) & ""_1""),If(RC[-2]=""临时安排"",(""C_"" & VLOOKUP(RC[-1],类别范围,2) & RIGHT(TEXT(RC[-6],""0000""),2) & RIGHT(TEXT(RC[-5],""00""),2) & RIGHT(TEXT(RC[-4],""00""),2) & ""_1""),If(RC[-2] = ""上月顺延"",INDEX(任务编号,SMALL(If(未完成任务处置=""顺延" & _
    "完成任务处置)-2,""""),COUNTIF(R3C5:RC[-2],""上月顺延""))),"""")))"
    Rg.AutoFill (Destination:= Ws.Range("G3:G17"), Type:= MsExcel.XlAutoFillType.xlFillDefault)

这个太折腾人了,用代码来设置报错;在模板文件中设好也报错,会自动删除公式。而这个公式在表中测试是能计算出正确结果的。
这个坎还绕不过去了。查了网上有类似情形,但没有解决方法,请老师指点指点!

--  作者:有点甜
--  发布时间:2017/8/28 16:33:00
--  

为什么要用数组公式?直接设置公式不行?

 

Rg.Formula = "xxxxx"


--  作者:有点甜
--  发布时间:2017/8/28 16:37:00
--  
 如果公式不是必须的,为什么不直接计算以后,直接给excel赋值?
--  作者:jweishan
--  发布时间:2017/8/28 16:40:00
--  

@甜版主

不行的。

...... INDEX(任务编号,SMALL(If(未完成任务处置=""顺延" & “完成任务处置)-2,""""),COUNTIF(R3C5:RC[-2],""上月顺延""))),"""") .......

 这段计算必须得是数组公式才算得出来。


--  作者:有点甜
--  发布时间:2017/8/28 16:51:00
--  

你确定你公式没有写错?在命令窗口执行下面的代码,拷贝生成的公式到excel去,测试是否有错误。

 

output.show("=IF(RC[-2]=""部门计划"",(""C_"" & VLOOKUP(RC[-3],部门范围,2) & RIGHT(TEXT(RC[-6],""0000""),2) & RIGHT(TEXT(RC[-5],""00""),2) & RIGHT(TEXT(RC[-4],""00""),2) & ""_1""),If(RC[-2]=""临时安排"",(""C_"" & VLOOKUP(RC[-1],类别范围,2) & RIGHT(TEXT(RC[-6],""0000""),2) & RIGHT(TEXT(RC[-5],""00""),2) & RIGHT(TEXT(RC[-4],""00""),2) & ""_1""),If(RC[-2] = ""上月顺延"",INDEX(任务编号,SMALL(If(未完成任务处置=""顺延" & _

    "完成任务处置)-2,""""),COUNTIF(R3C5:RC[-2],""上月顺延""))),"""")))")