Hello,

I am new here. I hope I'm not breaking any rules. I recently upgraded to
POI 5.1.0. Great stuff!
But unfortunately, I am getting some errors with functions with multiple
return types. I have an IF formula that either returns a result from an
INDEX formula or a boolean value (formula shown below). When debugging in
IntelliJ I can see that it is marked as an array formula.

*My formula:*

> =IF(AND(D5;D6>0);IFERROR(INDEX(K4:K13;D6;1);FALSE);FALSE)
>

As you can see, I'm using a check to see that the row index (D6) is not
zero. D5 is FALSE and D6 is 1 initially, so the formula should return
FALSE, but instead I get a #VALUE. It always returns #VALUE even if I
change the row index D6 to 0, 1, 2, etc. The range K4:K13 that I'm indexing
is a simple list of numbers, 1, 2, 3, ..., 10.

Below is a simple example, I have tried to reduce the code as much as
possible, and reduced the Excel file to the bare minimum. Is there any way
I could share this with you? Maybe as a zip file? Or as a git repo?

> import org.apache.poi.ss.usermodel.*;
>
> import java.io.File;
>
> public class StandAlonePoiMultivaluedReturnExample {
>
>     private static final String exampleFilePath = 
> "src/main/resources/test-index-iferror.xlsx";
>
>     public static void main(String[] args) throws Exception {
>         System.out.println("Working Directory = " + 
> System.getProperty("user.dir"));
>         File file = new File(exampleFilePath);
>         Workbook wb = WorkbookFactory.create(file);
>         FormulaEvaluator evaluator = 
> wb.getCreationHelper().createFormulaEvaluator();
>         Cell formulaCellThatReturnsDifferentValues = 
> wb.getSheetAt(0).getRow(8).getCell(3);
>         boolean valueBeforeEvaluate = 
> formulaCellThatReturnsDifferentValues.getBooleanCellValue();
>         CellType type = 
> evaluator.evaluateFormulaCell(formulaCellThatReturnsDifferentValues);
>         CellValue value = 
> evaluator.evaluate(formulaCellThatReturnsDifferentValues);
>         System.out.println("The value from Excel is ["+valueBeforeEvaluate + 
> "] but POI 5.1.0 returns the type as [" + type + "] and value: " + value);
>     }
> }
>
>
This program gives the output:

> The value from Excel is [false] but POI 5.1.0 returns the type as [ERROR]
> and value: org.apache.poi.ss.usermodel.CellValue [#VALUE!]


Any advice?

Thanks

Reply via email to