Home » Sum Data Per Week Excluding Weekends

Sum Data Per Week Excluding Weekends

Sum the total sales per Week Excluding Weekends Dynamic array function allowed but Extra marks for Legacy Array Functions or PowerQuery Solution

📌 Challenge Details and Links
Challenge Number: 17
Challenge Difficulty: ⭐⭐⭐
📥Download Sample File
📥Link to the solutions on LinkedIn

Solving the challenge of Sum Data Per Week Excluding Weekends with Power Query

Power Query solution 1 for Sum Data Per Week Excluding Weekends, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Rows = Table.SelectRows(Source, each Date.DayOfWeek([Date]) <> 0 and Date.DayOfWeek([Date]) <> 6), 
  From = Table.Sort(
    Table.AddColumn(
      Rows, 
      "From - To", 
      each Text.From(Date.From(Date.StartOfWeek([Date], 1)))
        & " - "
        & Text.From(Date.From(Date.EndOfWeek([Date], 1)))
    ), 
    each [Date]
  ), 
  Sol = Table.Group(From, {"From - To"}, {{"Total Sales", each List.Sum([Sales])}})
in
  Sol
Power Query solution 2 for Sum Data Per Week Excluding Weekends, proposed by Brian Julius:
let
  Source = Table.TransformColumnTypes(
    Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
    {"Date", Date.Type}
  ), 
  Filter = Table.SelectRows(Source, each Text.Start(Date.DayOfWeekName([Date]), 1) <> "S"), 
  AddWeekToFrom = Table.AddColumn(
    Filter, 
    "WeekFromTo", 
    each [
      a = Date.StartOfWeek([Date], 1), 
      b = Date.AddDays(a, 6), 
      c = Text.From(a) & " - " & Text.From(b)
    ][c]
  ), 
  Group = Table.Group(
    AddWeekToFrom, 
    {"WeekFromTo"}, 
    {{"Total Sales", each List.Sum([Sales]), type nullable number}}
  )
in
  Group
Power Query solution 3 for Sum Data Per Week Excluding Weekends, proposed by Bhavya Gupta:
let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "dZK7DgIhEEV/xVCzYR7Iozb+gBYWGwsLjTaa6Pr/wsZhZRdLuHfODHPpe7V5nF6D0grJEBoConRw0amj7tXh/BrOz3u6gdCB65LMTTlXg1RHD6O8Pf3IvJBLZ+xgLehmLTmpRc1IM4M1ZM23vKVnQCgv0xB4NOwf7+G62t0ueYakszD+WDLGTxiy80G5Yiz1DLAC8No6WjaRHlxZ6j2vhRF09HbWBKgDlmW2DJlAJQodKDSfyrj0lMDgi+BKrqeMJTLQHuvEo8FQEpvkakicAJgcjV3lLtww/Swj/SyUZYjj+AE=", 
          BinaryEncoding.Base64
        ), 
        Compression.Deflate
      )
    ), 
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [Region = _t, Date = _t, Sales = _t]
  ), 
  changedType = Table.TransformColumnTypes(
    Source, 
    {{"Region", type text}, {"Date", type text}, {"Sales", Int64.Type}}
  )
in
  changedType
Power Query solution 4 for Sum Data Per Week Excluding Weekends, proposed by Nelson Mwangi:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  FilterWeekends = Table.SelectRows(
    Source, 
    each Date.DayOfWeek([Date]) <> 0 and Date.DayOfWeek([Date]) <> 6
  ), 
  EndOfWeek = Table.AddColumn(
    FilterWeekends, 
    "EndOfWeek", 
    each Date.From(Date.EndOfWeek([Date], 1))
  ), 
  Group = Table.Group(
    EndOfWeek, 
    {"EndOfWeek"}, 
    {{"WeekStart", each List.Min([Date])}, {"Sales", each List.Sum([Sales])}}
  ), 
  MergeCols = Table.AddColumn(
    Group, 
    "Week Start-End", 
    each Text.Combine({Text.From([WeekStart]), Text.From([EndOfWeek])}, " - ")
  ), 
  Sol = Table.SelectColumns(MergeCols, {"Week Start-End", "Sales"})
in
  Sol
Power Query solution 5 for Sum Data Per Week Excluding Weekends, proposed by 📊 Victor Ionescu:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  #"Changed Type" = Table.TransformColumnTypes(
    Source, 
    {{"Region", type text}, {"Date", type datetime}, {"Sales", Int64.Type}}
  ), 
  #"Inserted Day Name" = Table.AddColumn(
    #"Changed Type", 
    "Day Name", 
    each Date.DayOfWeekName([Date]), 
    type text
  ), 
  #"Filtered Rows" = Table.SelectRows(
    #"Inserted Day Name", 
    each ([Day Name] <> "duminică" and [Day Name] <> "sâmbătă")
  ), 
  #"Inserted Week of Year" = Table.AddColumn(
    #"Filtered Rows", 
    "Week of Year", 
    each Date.WeekOfYear([Date]), 
    Int64.Type
  ), 
  #"Grouped Rows" = Table.Group(
    #"Inserted Week of Year", 
    {"Week of Year"}, 
    {{"Week sales", each List.Sum([Sales]), type nullable number}}
  )
in
  #"Grouped Rows"

Solving the challenge of Sum Data Per Week Excluding Weekends with Excel

Excel solution 1 for Sum Data Per Week Excluding Weekends, proposed by Rick Rothstein:
=SUM(D$3:D$25*(C$3:C$25>=0+LEFT(
   F3,
   FIND(
       "-",
       F3)-2))*(C$3:C$25
Excel solution 2 for Sum Data Per Week Excluding Weekends, proposed by Julian Poeltl:
=LET(Dat,
   Table1[Date],
   Sales,
   Table1[Sales],
   Y,
   YEAR(
       Dat),
   WD,
   WEEKDAY(
       Dat,
       2),
   KW,
   BYROW(
       Dat,
       LAMBDA(
           ARR,
           WEEKNUM(
               ARR,
               2))),
   UYKW,
   Y&KW,
   USUM,
   UNIQUE(
       UYKW),
   SUM,
   BYROW(USUM,
   LAMBDA(AR,
   SUMPRODUCT(Sales*(WD<6)*(UYKW=AR)))),
   SUM0,
   FILTER(
       SUM,
       SUM>0),
   KWBegin,
   DATE(
       LEFT(
           USUM,
           4)*1,
       1,
       7*RIGHT(
           USUM,
           LEN(
               USUM)-4)-3-WEEKDAY(
           DATE(
               LEFT(
           USUM,
           4)*1,
               ,
               ),
           3)),
   KWBF,
   FILTER(
       KWBegin,
       SUM>0),
   KWB,
   KWBF-7,
   SUMSort,
   SORTBY(
       SUM0,
       KWB,
       1),
   KWBSort,
   SORT(
       KWB),
   HSTACK(
       TEXT(
           KWBSort,
           "M/D/YYYY")&" - "&TEXT(
           KWBSort+6,
           "M/D/YYYY"),
       SUMSort))
Excel solution 3 for Sum Data Per Week Excluding Weekends, proposed by Hamidi Hamid:
=SOMME(
   RECHERCHEX(
       TEXTE.AVANT(
           H3;
           "-")*1;
       MAP(
           'Sales Data'!$C$3:$C$25;
           LAMBDA(
               a;
               SI(
                   JOURSEM(
                       a;
                       2)<6;
                   a;
                   0)));
       'Sales Data'!$D$3:$D$25;
       0;
       1;
       1):RECHERCHEX(
       TEXTE.APRES(
           H3;
           "-")*1;
       MAP(
           'Sales Data'!$C$3:$C$25;
           LAMBDA(
               a;
               SI(
                   JOURSEM(
                       a;
                       2)<6;
                   a;
                   0)));
       'Sales Data'!$D$3:$D$25;
       0;
       -1;
       1))
Excel solution 4 for Sum Data Per Week Excluding Weekends, proposed by Ankur Sharma:
=LET(a,
    Table1[Date],
   
BYROW(F3:F10,
    LAMBDA(b,
    SUM(FILTER(Table1[Sales],
    (a >= (--TEXTBEFORE(
        b,
         " ",
         1))) * (a <= --TEXTBEFORE(
        b,
         " ",
         1) + 4))))))
Excel solution 5 for Sum Data Per Week Excluding Weekends, proposed by Mahmoud Bani Asadi:
=DROP(
   GROUPBY(
       WEEKNUM(
           +tbl[Date],
           2),
       HSTACK(
           tbl[Date],
           tbl[Date],
           tbl[Sales]),
       HSTACK(
           MIN,
           MAX,
           SUM),
       ,
       ,
       2,
       WEEKDAY(
           +tbl[Date],
           2)<6),
   1,
   1)
Excel solution 6 for Sum Data Per Week Excluding Weekends, proposed by Dominic Walsh:
=LET(
   a,
    C3:C25,
    b,
   FILTER(
       a,
       MOD(
           a-2,
           7)<5),
   c,
    SORT(
        UNIQUE(
            b-MOD(
                b-2,
                7))),
    d,
   TEXT(
       c,
        "m/d/yyyy") & " - " & TEXT(
       c+6,
       "m/d/yyyy"),
   e,
    D3:D25,
    f,
    SUMIFS(
        e,
        a,
        ">="&c,
        a,
        "<"&c+5),
   HSTACK(
       d,
       f))
Excel solution 7 for Sum Data Per Week Excluding Weekends, proposed by William Kiarie:
=SUMIFS(
   D:D,
   C:C,
   ">=" & I3,
    C:C,
    "<=" & J3,
    E:E,
    "<=" & 5)
or
=SUM(FILTER(D:D,
   (C:C>=I3)*(C:C<=J3)*(E:E<=5)))

Leave a Reply