2014-01-14 28 views
1

我试图插入一个“COUNTIFS”公式,我知道它不是一个支持的函数,但是我已经在编写器上关闭了计算设置。它不会抛出任何错误。然而,PHPExcel - 从公式中删除列的范围

$active_sheet->setCellValue('C3', "=COUNTIFS('INVENTORY'!$H:$H,1,'INVENTORY'!$C:$C,\"ADMIN\",'INVENTORY'!$N:$N,1)"); 

越来越写入文件

COUNTIFS('INVENTORY'!:,1,'INVENTORY'!:,"ADMIN",'INVENTORY'!:,1) 

我另一页上读到某处像这样的引用列中也不支持,但我也试图把他们像“$ C2:$ C3000“并没有帮助。

回答

2

问题在于你在第二个参数周围使用了双引号。 PHP试图用实际变量替换$ H,$ C和$ N。

尝试使用单引号和转义字符串中的现有单引号。

Here是关于PHP如何解析双引号字符串的文档,可能有所帮助。

+0

哇,这是一个noob错误。起初我没有清楚地读过你的问题,甚至在我自己想出来之后,我仍然没有处理你所说的话。经过另一次访问页面,它打击了我。 – syntax53

0

列和行范围不会PHPExcel在这一点上的支持:您需要提供一个实际的范围(例如'INVENTORY'!$H1:$H500而不是简单地'INVENTORY'!$H:$H

也有一对夫妇的已知问题的插入或删除新时行或列转换成工作表时,它不能正确调整现有的公式以反映这种变化。这些问题已在github的最新开发分支代码中修复,因此您可能需要再次尝试使用该代码

+0

我曾尝试过替代范围(在我的问题中提到过),并没有帮助。我只是尝试了最新的开发版本以及1.8 rc1,两者都有相同的结果:( 我甚至试图根据你对bug的评论移动countifs公式的插入到文件的最后,没有任何区别。 – syntax53

1

因此解决方案是删除或逃脱美元符号($)。我删除了它们,它运行良好,然后我逃脱了它们,它也起作用了!

得到的示例行:

$active_sheet->setCellValue('C3', "=COUNTIFS('INVENTORY'!\$H:\$H,1,'INVENTORY'!\$C:\$C,\"ADMIN\",'INVENTORY'!\$N:\$N,1)"); 

编辑:哇,小白的错误。信贷去Ian Belcher。