为什么我不能添加sumproduct配方?

时间:2015-12-01 16:37:06

标签: excel-formula phpexcel

我尝试添加一个名为FTE的列,其中包含以下公式:

=I2/SUMPRODUCT(I:I,(M:M=M2) * (C:C=C2) * (N:N=N2))

此公式在Excel中应用时有效,但从php添加时,我只是收到错误:

  

最长执行时间计算.php phpexcel

$assembly = $arrayWorksheet->addColValByRow($assembly, 'FTE', ['= I', '/SUMPRODUCT(I:I,(M:M=M', ')*(C:C=C', ')*(N:N=N'], '))');
// Output : =I2/SUMPRODUCT(I:I,(M:M=M2)*(C:C=C2)*(N:N=N2))
可悲的是我无法弄明白为什么。我的初始公式为SUMIFS我转换为SUMPRODUCT,因为我知道SUMIFS尚未实现。

function addColValByRow($worksheet, $title, $valArray, $finalVal = NULL) {
        // Take the last column
        $lastCol = key( array_slice( $worksheet[1], -1, 1, TRUE ) );
        $newCol = ++$lastCol;
        // tke the last cell
        $lastCell = key( array_slice( $worksheet, -1, 1, TRUE ) );
        $worksheet[1][$newCol] = $title;

        for ($i = 2; $i <= $lastCell; $i++) {
            $worksheet[$i][$newCol] = "";
            foreach (array_keys($valArray) as $key) {
                $worksheet[$i][$newCol] .= $valArray[$key] . $i;
            }
            if ($finalVal != NULL) {
                $worksheet[$i][$newCol] .= $finalVal;
            }
        }

        return $worksheet;
    }

1 个答案:

答案 0 :(得分:0)

问题不在于SUMPRODUCT(),而且PHPExcel并不完全支持列/行范围,所以它是导致此问题的列范围,例如I:IM:MC:C

如果您可以将其更改为实际的细胞范围(例如I1:I2048),那么它不应该是一个问题。

并且(以供将来参考)SUMIFS()在github上develop分支的最新代码中实现