PHPSpreadsheet generates an error “Wrong number of arguments for INDEX() function: 5 given, between 1 and 4 expected”

醉酒当歌 提交于 2019-12-31 04:08:25

问题


I tried to enter the following code in my excel formula bar directly =INDEX($E$4:$E$132,AGGREGATE(15,6,ROW($1:$30) / ($J$4:$J$132=M4), COUNTIF($M$4:M4, M4))) and works perfectly fine (the left column on the pic below).


But if I'm using my web application to generate an excel report file (PHP, using CodeIgniter and Laravel). It displays an error "'Wrong number of arguments for INDEX() function: 5 given, between 1 and 4 expected'"

Here's my sample code snippet:

$code = "=INDEX(\$E\$4:\$E\$$occurance, AGGREGATE(15,6,ROW(\$1:\$$occurance) / (\$J\$4:\$J\$$occurance=M$top_cell), COUNTIF(\$M\$4:M$top_cell, M$top_cell)))";
$ews2->setCellValue("L$top_cell", $code);

I also have tried to use the setValueExplicit method but causes the excel file to NOT precalculate the code, it reads the code as a string

$ews2->setCellValueExplicit("L$top_cell", $code, DataType::TYPE_STRING);

NOTE TYPE_STRING is provided because if TYPE_FORMULA is also used, the same output mentioned at the top occurs

Here's what it looks like using the setCellValueExplicit

May I know the right solution or quick fix for this? Thank you very much in advance!

回答1:


I have found out that the PHPSpreadsheet library for PHP is yet to allow the usage of the AGGREGATE() and complicated formulas/functions, so I had found another way around

By using this excel code

=INDEX(E$2:E$38,IF(M4=M3,MATCH(L3,E$2:E$38,0),0)+MATCH(M4,OFFSET(J$2,IF(M4=M3,MATCH(L3,E$2:E$38,0),0),0,COUNT(J$2:J$38)-IF(M4=M3,MATCH(L3,E$2:E$38,0),0),1),0))

I was able to traverse through my entire range and make sure that no duplicate publication names would appear

This is in relation with the my other question -> Excel - Getting the 2nd or nth matched string from your corresponding data



来源:https://stackoverflow.com/questions/56018814/phpspreadsheet-generates-an-error-wrong-number-of-arguments-for-index-functio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!