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))
我能够遍历整个范围并确保不会出现重复的出版物名称
这与我的另一个问题有关 ->
我试图直接在我的 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))
我能够遍历整个范围并确保不会出现重复的出版物名称
这与我的另一个问题有关 ->