PHPSpreadsheet 生成错误 "Wrong number of arguments for INDEX() function: 5 given, between 1 and 4 expected"

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

我试图直接在我的 excel 公式栏中输入以下代码 =INDEX($E:$E2,AGGREGATE(15,6,ROW(:) / ($J:$J2=M4), COUNTIF($M:M4, M4))) 并且工作得很好(下图的左栏)。


但是如果我使用我的网络应用程序生成 excel 报告文件(PHP,使用 CodeIgniter 和 Laravel)。它显示错误“'Wrong number of arguments for INDEX() function: 5 given, between 1 and 4 expected'

这是我的示例代码片段:

$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);

我也曾尝试使用 setValueExplicit 方法,但导致 excel 文件不预先计算代码,它将代码读取为 字符串

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

注意 TYPE_STRING 是因为如果还使用 TYPE_FORMULA,则会出现顶部提到的相同输出

这是使用 setCellValueExplicit

的样子

我可以知道正确的解决方案或快速修复吗?非常感谢您!

我发现 PHP 电子表格库 PHP 尚未允许使用 AGGREGATE() 和复杂的 formulas/functions,所以我找到了另一个绕过

通过使用此 excel 代码

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

我能够遍历整个范围并确保不会出现重复的出版物名称

这与我的另一个问题有关 ->