Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions src/EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Filter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,13 +137,23 @@ private static CompileResult FilterOnColumn(IRangeInfo arg1, IRangeInfo arg2, Fu
var checkDimension = !arg2.IsInMemoryRange;
var fc = arg2.Address.FromCol;
var dfc = arg2.Dimension.FromCol;
for (int c = 0; c < s2.NumberOfCols; c++)
var columns = s2.NumberOfCols == 1 ? s1.NumberOfCols : s2.NumberOfCols;
for (int c = 0; c < columns; c++)
{
if (checkDimension && fc + c > dfc)
{
break;
}
var boolValue = ConvertUtil.GetValueDouble(arg2.GetOffset(0, c), false, true);
int boolIx;
if(s2.NumberOfCols == 1)
{
boolIx = 0;
}
else
{
boolIx = c;
}
var boolValue = ConvertUtil.GetValueDouble(arg2.GetOffset(0, boolIx), false, true);
if (double.IsNaN(boolValue))
{
return CompileResult.GetDynamicArrayResultError(eErrorType.Value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,5 +83,26 @@ public void FilterShouldHandleNAAsIfEmptyValue()
Assert.AreEqual("Joe", s.Cells["C1"].Value);
}
}

[TestMethod]
public void Filter_SingleColumnInclude_BroadcastsAcrossAllValueColumns()
{
using (var package = new ExcelPackage())
{
var s = package.Workbook.Worksheets.Add("test");

s.Cells["A1"].Value = "GL-40010 - Office Supplies";
s.Cells["B1"].Value = 4520.75d;
s.Cells["C1"].Value = "Not Posted";

s.Cells["E1"].Formula = "FILTER(A1:B1, C1 <> \"Posted!\", 0)";
s.Calculate();

Assert.AreEqual("GL-40010 - Office Supplies", s.Cells["E1"].Value,
"Label-kolumnen ska behållas.");
Assert.AreEqual(4520.75d, s.Cells["F1"].Value,
"Beloppskolumnen ska också behållas via broadcast.");
}
}
}
}
13 changes: 13 additions & 0 deletions src/EPPlusTest/Issues/FormulaCalculationIssues.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1679,6 +1679,19 @@ public void s1054()
Assert.AreEqual(1258679d, result);
}
}

[TestMethod]
public void s1060()
{
using (var p = OpenTemplatePackage("s1060.xlsx"))
{
var ws = p.Workbook.Worksheets[0];
ws.Cells["A12"].Calculate();
var result = ws.Cells["A13"].Value;
Assert.AreEqual(4520.75, result);
}
}

}
}

Loading