diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/XLCalcEngine.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/XLCalcEngine.cs index ca53ef7..eb359ac 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/XLCalcEngine.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/XLCalcEngine.cs @@ -79,7 +79,7 @@ if (XLHelper.IsNullOrWhiteSpace(f)) return cell.Value; else - return _ce.Evaluate(f); + return new XLCalcEngine(cell.Worksheet).Evaluate(f); } finally diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs index 3d96791..2fe1e03 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs @@ -581,5 +581,17 @@ var r = ws.Cell("C1").Value; Assert.AreEqual("The total value is: 4", r.ToString()); } + + [TestMethod] + public void Formula_from_another_sheet() + { + var wb = new XLWorkbook(); + var ws1 = wb.AddWorksheet("ws1"); + ws1.FirstCell().SetValue(1).CellRight().SetFormulaA1("A1 + 1"); + var ws2 = wb.AddWorksheet("ws2"); + ws2.FirstCell().SetFormulaA1("ws1!B1 + 1"); + var v = ws2.FirstCell().Value; + Assert.AreEqual(3.0, v); + } } }