我正在尝试编写一个excel公式,以使用POI获取列中具有特定值的行数。应用过滤器时,计数应自动更新。 例如:如果列的值为“Y”或“N”,我需要获取特定列中具有“Y”的行数。当我们在Excel中的任何列上应用过滤器时,此计数应自动更新。
我尝试过使用,
cell1.setCellFormula("COUNTIF(S11:S6768,\"N\")");
但COUNTIF不会在过滤器上自动更新。
我也试过了,
cell1.setCellFormula("SUMPRODUCT(--(S11:S6768=\"N\"),SUBTOTAL(3,OFFSET(S11,ROW(S11:S6768)-ROW(S11),0)))+(NOW()*0)");
但这显示了#VALUE!在结果单元格而不是公式的结果。一旦我点击编辑公式并按回车键,它就会显示正确的结果。然后在我们过滤任何列时开始更新。
我试过了workbook.setForceFormulaRecalculation(true)
,但没有用。我收到一个RuntimeException,说SUMPRODUCT中的内容不合适。
我使用的POI版本是3.9
有没有人知道我可以用于我的要求的任何其他功能,或者我如何在这个阶段继续?
答案 0 :(得分:0)
我修好了。我必须使用所需的公式创建模板,并将数据附加到模板以使其工作。公式在打开Excel和过滤器时评估得很好。