diff --git a/src/java/org/apache/poi/ss/formula/functions/Vlookup.java b/src/java/org/apache/poi/ss/formula/functions/Vlookup.java index 5bdfeba03..a2daa856e 100644 --- a/src/java/org/apache/poi/ss/formula/functions/Vlookup.java +++ b/src/java/org/apache/poi/ss/formula/functions/Vlookup.java @@ -52,7 +52,12 @@ public final class Vlookup extends Var3or4ArgFunction { // lookup_value , table_array, range_lookup, find lookup value, col_index, fetch result ValueEval lookupValue = OperandResolver.getSingleValue(lookup_value, srcRowIndex, srcColumnIndex); TwoDEval tableArray = LookupUtils.resolveTableArrayArg(table_array); - boolean isRangeLookup = LookupUtils.resolveRangeLookupArg(range_lookup, srcRowIndex, srcColumnIndex); + boolean isRangeLookup; + try { + isRangeLookup = LookupUtils.resolveRangeLookupArg(range_lookup, srcRowIndex, srcColumnIndex); + } catch(RuntimeException e) { + isRangeLookup = true; + } int rowIndex = LookupUtils.lookupIndexOfValue(lookupValue, LookupUtils.createColumnVector(tableArray, 0), isRangeLookup); int colIndex = LookupUtils.resolveRowOrColIndexArg(col_index, srcRowIndex, srcColumnIndex); ValueVector resultCol = createResultColumnVector(tableArray, colIndex); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java index cd1048662..f8f71686f 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java @@ -437,16 +437,17 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { assertEquals("D 0,068", evaluator.evaluate(wb.getSheetAt(0).getRow(1).getCell(1))); } + @Test public void testBug62275() throws IOException { try (Workbook wb = new XSSFWorkbook()) { Sheet sheet = wb.createSheet(); Row row = sheet.createRow(0); Cell cell = row.createCell(0); - cell.setCellFormula("vlookup(A2,B1:B5,2,)"); + cell.setCellFormula("vlookup(A2,B1:B5,2,true)"); - CreationHelper crateHelper = wb.getCreationHelper(); - FormulaEvaluator eval = crateHelper.createFormulaEvaluator(); + CreationHelper createHelper = wb.getCreationHelper(); + FormulaEvaluator eval = createHelper.createFormulaEvaluator(); eval.evaluate(cell); } }