diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Tally.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Tally.cs index bbf5f63..f7d76fc 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Tally.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/CalcEngine/Functions/Tally.cs @@ -118,10 +118,19 @@ public double Sum() { return Numerics().Sum(); } public double Average() { - return Numerics().Average(); + return Numerics().Count == 0 ? 0 : Numerics().Average(); } - public double Min() { return Numerics().Min(); } - public double Max() { return Numerics().Max(); } + + public double Min() + { + return Numerics().Count == 0 ? 0 : Numerics().Min(); + } + + public double Max() + { + return Numerics().Count == 0 ? 0 : Numerics().Max(); + } + public double Range() { var nums = Numerics(); diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs index 92cd714..4b89d09 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Excel/CalcEngine/FunctionsTests.cs @@ -2,7 +2,7 @@ using ClosedXML.Excel; using NUnit.Framework; -namespace ClosedXML_Tests.Excel.DataValidations +namespace ClosedXML_Tests.Excel.CalcEngine { /// /// Summary description for UnitTest1 @@ -596,5 +596,22 @@ //See http://office.microsoft.com/en-us/excel-help/trim-function-HP010062581.aspx Assert.AreEqual("Test\u00A0", XLWorkbook.EvaluateExpr("Trim(\"Test\u00A0 \")")); } + + [Test] + public void TestEmptyTallyOperations() + { + //In these test no values have been set + XLWorkbook wb = new XLWorkbook(); + wb.Worksheets.Add("TallyTests"); + var cell = wb.Worksheet(1).Cell(1, 1).SetFormulaA1("=MAX(D1,D2)"); + Assert.AreEqual(0, cell.Value); + cell = wb.Worksheet(1).Cell(2, 1).SetFormulaA1("=MIN(D1,D2)"); + Assert.AreEqual(0, cell.Value); + cell = wb.Worksheet(1).Cell(3, 1).SetFormulaA1("=SUM(D1,D2)"); + Assert.AreEqual(0, cell.Value); + cell = wb.Worksheet(1).Cell(3, 1).SetFormulaA1("=AVERAGE(D1,D2)"); + Assert.AreEqual(0, cell.Value); + + } } } \ No newline at end of file