diff --git a/src/EPPlus/FormulaParsing/Excel/Functions/Text/Search.cs b/src/EPPlus/FormulaParsing/Excel/Functions/Text/Search.cs index 7ead6b262..93906f319 100644 --- a/src/EPPlus/FormulaParsing/Excel/Functions/Text/Search.cs +++ b/src/EPPlus/FormulaParsing/Excel/Functions/Text/Search.cs @@ -29,7 +29,7 @@ internal class Search : ExcelFunction public override ExcelFunctionArrayBehaviour ArrayBehaviour => ExcelFunctionArrayBehaviour.Custom; public override void ConfigureArrayBehaviour(ArrayBehaviourConfig config) { - config.SetArrayParameterIndexes(0, 1); + config.SetArrayParameterIndexes(0, 1, 2); } public override int ArgumentMinLength => 2; diff --git a/src/EPPlusTest/Issues/FormulaCalculationIssues.cs b/src/EPPlusTest/Issues/FormulaCalculationIssues.cs index 149b54db1..7523c413d 100644 --- a/src/EPPlusTest/Issues/FormulaCalculationIssues.cs +++ b/src/EPPlusTest/Issues/FormulaCalculationIssues.cs @@ -1667,6 +1667,63 @@ public void s1050() } } + [TestMethod] + public void s1063_Isolated() + { + using (var p = OpenPackage("Search3ArgsArrays.xlsx", true)) + { + var ws = p.Workbook.Worksheets.Add("args"); + + ws.Cells["A1:A3"].Formula = "\"I.am.a.Beautiful.Creature\" & ROW()"; + + ws.Cells["A1:A3"].Calculate(); + + ws.Cells["B1:B3"].Formula = "(ROW()-1)*2 + 1"; + ws.Cells["B1:B3"].Calculate(); + + ws.Cells["C1"].CreateArrayFormula("SEARCH(\".\",A1:A3,B1:B3+1)", true); + ws.Cells["C1"].Calculate(); + + var range = ws.Cells["C1:C3"]; + + var myValues = ws.Cells["C1:C3"].Value; + + List intValues = new List(); + + foreach(var cell in range) + { + intValues.Add(cell.GetValue()); + } + + Assert.AreEqual(2, intValues[0]); + Assert.AreEqual(5, intValues[1]); + Assert.AreEqual(7, intValues[2]); + + SaveAndCleanup(p); + } + } + + [TestMethod] + public void s1063() + { + using (var p = OpenTemplatePackage("issues\\s1063.xlsx")) + { + var ws = p.Workbook.Worksheets[0]; + + ws.ClearFormulaValues(); + ws.Calculate(); + + Assert.AreEqual(ws.Cells["A1"].Value.ToString(), "R&D Project"); + Assert.AreEqual(ws.Cells["A2"].Value.ToString(), "Labwerks"); + Assert.AreEqual(ws.Cells["A3"].Value.ToString(), "R&D Single Order"); + + p.Workbook.CalcMode = ExcelCalcMode.Manual; + + SaveWorkbook("s1063-saved.xlsx", p); + } + } + + [TestMethod] public void s1054() {