如果条件不起作用,则在Apache POI(版本3.15)中使用sumproduct函数

时间:2018-06-22 12:42:02

标签: apache excel-formula sum apache-poi product

我正在使用下面的公式来计算使用Apache poi 3.15版本的if条件的总和,但是没有使用if条件(-(A1:A6 =“ A”))及其给出的“ #VALUE”错误进行求和。 如果我直接在excel中使用相同的公式,则其效果可预期。并且如果我删除“-(A1:A6 =“ A”)“这种情况,则可以与poi一起正常工作。

公式:

=SUMPRODUCT(--(A1:A6="A"),B1:B6,C1:C6)

能否请您告诉我如何评估这种公式,或者是否有其他替代方法可以评估这种公式?

2 个答案:

答案 0 :(得分:0)

好吧,很抱歉最初吠叫了错误的树...

一双新鲜的周一眼睛,我可以看到问题所在:

您在带引号的字符串中使用引号",您需要使用\-cell.setCellFormula("SUMPRODUCT(--(A1:A6=\"A\"),B1:B6,C1:C6)");

对公式中的引号进行转义

=SUMPRODUCT(--(A1:A6="A")*(B1:B6)*(C1:C6)) -已编辑为所需的逻辑

通过使用双一元“ --”,将true / false转换为0或1。

这是一个if条件,因此您还需要将每行数据乘以0或1并求和;条件为假时,该行的乘积将乘以0,得出该行的总和为0。

答案 1 :(得分:0)

问题不在于公式,而在于我使用的工作簿。工作簿SXSSFWorkbook的评估存在问题。当我更改为XSSFWorkbook时,它开始正确评估。

我建议使用XSSFWorkbook(.xlsx)或HSSFWorkbook(.xls)以便使公式正常工作。

Sub Sleep(Sec)
Dim S as Object: Set S = CreateObject("WScript.Shell")
S.Run "cmd /c ping localhost -n " & Sec, 0, True   End Sub

注意:请勿将IF条件(-(A1:A6 =“ A”))作为第一个参数。

谢谢