Sum Every Nth Occurrence per payment if the project meets the criteria Strictly Legacy Array Functions or PowerQuery Note: Every payment has 5 occurrences. Check if the payment occurrence criteria and project criteria per payment are met before summing data
📌 Challenge Details and Links
Challenge Number: 4
Challenge Difficulty: ⭐⭐
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Sum Every Nth Occurrence based on a Criteria Challenge with Power Query
Power Query solution 1 for Sum Every Nth Occurrence based on a Criteria Challenge, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = Excel.CurrentWorkbook(){[Name = "tblProjects"]}[Content],
GroupPay = Table.Combine(
Table.Group(Source, {"Payment"}, {{"All", each Table.AddIndexColumn(_, "Occurrence", 1)}})[All]
),
Sol = Table.Sort(
Table.Group(
GroupPay,
{"Project"},
{
{
"Total",
(x) =>
let
a = x,
b = Table.SelectRows(
Excel.CurrentWorkbook(){[Name = "Table2"]}[Content],
each [Criteria Project] = x[Project]{0}
)[Occurrence]{0},
c = List.Sum(Table.SelectRows(a, each [Occurrence] = b)[Amount])
in
c
}
}
),
"Project"
)
in
SolPower Query solution 2 for Sum Every Nth Occurrence based on a Criteria Challenge, proposed by Bhavya Gupta:
let
Source = Excel.CurrentWorkbook(){[Name = "tblProjects"]}[Content],
G_1 = Table.Combine(
Table.Group(
Source,
{"Payment"},
{{"All", each Table.AddIndexColumn([[Project], [Amount]], "Occurrence", 1)}}
)[All]
),
G_2 = Table.Group(
G_1,
{"Project", "Occurrence"},
{{"Total", each List.Sum([Amount]), type number}}
),
LookupVal = Table.FromRows(
Json.Document(
Binary.Decompress(
Binary.FromText(
"i45WCijKz0pNLlFwVNJRMlKK1UGIOAFFjFFEnIEiJigiLkARU6XYWAA=",
BinaryEncoding.Base64
),
Compression.Deflate
)
),
{"Project", "Occurrence"}
),
CT = Table.TransformColumnTypes(LookupVal, {{"Occurrence", Int64.Type}}),
Output = Table.AddColumn(
CT,
"Total",
each G_2{[Project = [Project], Occurrence = [Occurrence]]}?[Total]? ?? 0
)
in
OutputPower Query solution 3 for Sum Every Nth Occurrence based on a Criteria Challenge, proposed by Nelson Mwangi:
let
Source = Excel.CurrentWorkbook(){[Name = "tblProjects"]}[Content],
Group = Table.Group(
Source,
{"Payment"},
{{"GroupedTable", each Table.AddIndexColumn(_, "Payment Occurence", 1, 1), type table}}
),
XpandTable = Table.ExpandTableColumn(
Group,
"GroupedTable",
{"Project", "Amount", "Payment Occurence"},
{"Project", "Amount", "Payment Occurence"}
),
CriteriaTable = {"Project A, 2", "Project B, 3", "Project C,4", "Project D,5"},
Convrt = Table.FromList(CriteriaTable, Splitter.SplitTextByDelimiter(","), {"Proj", "Occurence"}),
DataType = Table.TransformColumnTypes(Convrt, {{"Occurence", Int64.Type}}),
JoinTables = Table.Join(XpandTable, "Project", DataType, "Proj", JoinKind.LeftOuter),
CustomCol = Table.AddColumn(JoinTables, "Custom", each [Payment Occurence] = [Occurence]),
FilterTrue = Table.SelectRows(CustomCol, each ([Custom] = true)),
GroupSol = Table.Group(
FilterTrue,
{"Project", "Payment Occurence"},
{{"Total", each List.Sum([Amount]), type number}}
)
in
GroupSolSolving the challenge of Sum Every Nth Occurrence based on a Criteria Challenge with Excel
Excel solution 1 for Sum Every Nth Occurrence based on a Criteria Challenge, proposed by Pieter de B.:
=SUMPRODUCT($E$3:$E$23*(MMULT((TRANSPOSE(
$C$3:$C$23)=$C$3:$C$23)*(TRANSPOSE(
ROW(
$C$3:$C$23))<=ROW(
$C$3:$C$23)),
ROW(
$C$3:$C$23)^0)=H3)*($B$3:$B$23=G3))Excel solution 2 for Sum Every Nth Occurrence based on a Criteria Challenge, proposed by Ankur Sharma:
=LET(a,
tblProjects3[Project],
b,
MOD(
SEQUENCE(
COUNTA(
a)),
5),
MAP(H3:H6,
I3:I6,
LAMBDA(c,
d,
SUM(FILTER(tblProjects3[Amount],
(a = c) * (IF(
b = 0,
5,
b) = d),
0)))))Excel solution 3 for Sum Every Nth Occurrence based on a Criteria Challenge, proposed by JvdV –:
=SUMPRODUCT((B$3:B$23=H3)*(MOD(
ROW(
B$3:B$23)+2,
5)+1=I3),
E$3:E$23)