Home » Pivot with Total Line

Pivot with Total Line

Pivot the given data by summing up the values. Insert a Total line also.

📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 700
Challenge Difficulty: ⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn

Solving the challenge of Pivot with Total Line with Power Query

Power Query solution 1 for Pivot with Total Line, proposed by Kris Jaganah:
let
  A = Text.Combine(Excel.CurrentWorkbook(){[Name = "Table1"]}[Content][Data], ", "), 
  B = Text.ToList(Text.Select(A, {"A" .. "Z"})), 
  C = List.Transform(Text.Split(Text.Remove(A, {"A" .. "Z", "-", " "}), ","), Number.From), 
  D = List.Transform(
    List.Sort(List.Distinct(B)), 
    each {_, List.Sum(List.Zip(List.Select(List.Zip({B, C}), (v) => v{0} = _)){1})}
  ), 
  E = Table.FromRows(D & {{"TOTAL", List.Sum(C)}}, {"Alphabet", "Value"})
in
  E
Power Query solution 2 for Pivot with Total Line, proposed by Kris Jaganah:
let
 
 A = {"Alphabet","Value"},
 B = Table.FromRows(List.Split( List.Select( Text.SplitAny (Text.Combine( 
 Excel.CurrentWorkbook(){[Name="Table1"]}[Content][Data],", "),"-, "),
 (w)=> w <> ""),2) ,A),
 C = Table.TransformColumnTypes(B,{A{1}, Int64.Type}),
 D = Table.Group(C, A{0}, {A{1}, each List.Sum([Value])}),
 E = Table.Sort(D,A{0}),
 F = E & hashtag#table( A , {{"TOTAL",List.Sum(C[Value])}})
in
 F
                    
                  
          
Power Query solution 3 for Pivot with Total Line, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Origen = Excel.CurrentWorkbook(){[Name = "Tabla1"]}[Content], 
  Comb = List.Combine(Table.AddColumn(Origen, "A", each Text.Split([Data], ", "))[A]), 
  Sel = List.Select(
    List.Transform({"A" .. "Z"}, each List.Select(Comb, (x) => Text.StartsWith(x, _))), 
    each not List.IsEmpty(_)
  ), 
  Sol = Table.FromRows(
    let
      m = List.Transform(
        Sel, 
        each {
          Text.Start(_{0}, 1), 
          List.Sum(
            List.Transform(
              _, 
              (x) =>
                let
                  a = Text.Split(x, "-"), 
                  b = Number.From(a{1})
                in
                  b
            )
          )
        }
      ), 
      n = m & {{"TOTAL", List.Sum(List.Transform(m, each _{1}))}}
    in
      n, 
    {"Alphabets", "Value"}
  )
in
  Sol
Power Query solution 4 for Pivot with Total Line, proposed by Abdallah Ally:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Split = Text.Split(Text.Combine(Source[Data], ", "), ", "), 
  FromList = Table.FromList(Split, each Text.Split(_, "-"), {"Alphabet", "Value"}), 
  Group = Table.Group(
    FromList, 
    "Alphabet", 
    {"Value", each List.Sum(List.Transform([Value], Number.From))}, 
    1, 
    (x, y) => Value.Compare(x, y)
  ), 
  Result = Table.InsertRows(
    Group, 
    Table.RowCount(Group), 
    {[Alphabet = "TOTAL", Value = List.Sum(Group[Value])]}
  )
in
  Result
Power Query solution 5 for Pivot with Total Line, proposed by Ramiro Ayala Chávez:
let
  S = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  a = Table.ExpandListColumn(Table.TransformColumns(S, {"Data", each Text.Split(_, ", ")}), "Data"), 
  b = Table.TransformColumnTypes(
    Table.SplitColumn(a, "Data", Splitter.SplitTextByDelimiter("-"), {"Alphabet", "V"}), 
    {"V", Int64.Type}
  ), 
  c = Table.Sort(Table.Group(b, "Alphabet", {"Value", each List.Sum([V])}), {"Alphabet", 0}), 
  Sol = Table.InsertRows(c, Table.RowCount(c), {[Alphabet = "TOTAL", Value = List.Sum(c[Value])]})
in
  Sol
Power Query solution 6 for Pivot with Total Line, proposed by Seokho MOON:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Rows   = List.TransformMany(Source[Data], each Text.Split(_, ", "), (x, y) => Text.Split(y, "-")), 
  Tbl    = Table.FromList(Rows, each {_{0}, Number.From(_{1})}, {"Alphabet", "Value"}), 
  Group  = Table.Sort(Table.Group(Tbl, "Alphabet", {"Value", each List.Sum([Value])}), "Alphabet"), 
  Res    = Group & Table.FromRows({{"Total", List.Sum(Group[Value])}}, Value.Type(Group))
in
  Res
Power Query solution 7 for Pivot with Total Line, proposed by Meganathan Elumalai:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Group = Table.Sort(
    Table.Group(
      Table.FromRows(
        List.Transform(
          List.Combine(List.Transform(Source[Data], (f) => Text.Split(f, ", "))), 
          (x) => Text.Split(x, "-")
        ), 
        {"Alphabets", "N"}
      ), 
      "Alphabets", 
      {"Value", each List.Sum(List.Transform([N], Number.From))}
    ), 
    "Alphabets"
  ), 
  Result = Group & Table.FromRecords({[Alphabets = "Total", Value = List.Sum(Group[Value])]})
in
  Result
Power Query solution 8 for Pivot with Total Line, proposed by Antriksh Sharma:
let
  Source = Table, 
  Split = List.TransformMany(
    Source[Data], 
    (x) => List.Transform(Text.Split(x, ", "), each Text.Split(_, "-")), 
    (x, y) => y
  ), 
  Combine = Table.TransformColumnTypes(
    Table.FromRows(Split, type table [Alphabet = text, Value = number]), 
    {"Value", type number}
  ), 
  Group = Table.Group(Combine, "Alphabet", {"Value", each List.Sum([Value]), type number}), 
  TotalRow = Table.FromRecords(
    {[Alphabet = "Total", Value = List.Sum(Group[Value])]}, 
    type table [Alphabet = text, Value = number]
  ), 
  Append = Group & TotalRow
in
  Append
Power Query solution 9 for Pivot with Total Line, proposed by Antriksh Sharma:
let
  Source = Table, 
  Split = Table.FromList(
    Source[Data], 
    (x) => List.Transform(Text.Split(x, ", "), (y) => Text.Split(y, "-"))
  ), 
  Transform = Table.TransformColumns(
    Split, 
    {}, 
    each Table.FromRows({{_{0}, Number.From(_{1})}}, type table [Alphabet = text, Value = number])
  ), 
  CombineCols = Table.CombineColumns(
    Transform, 
    Table.ColumnNames(Transform), 
    each Table.Combine(_), 
    "Combine"
  ), 
  CombineTables = Table.Combine(CombineCols[Combine]), 
  Group = Table.Group(CombineTables, "Alphabet", {"Value", each List.Sum([Value]), type number}), 
  TotalRow = Table.FromRecords(
    {[Alphabet = "Total", Value = List.Sum(Group[Value])]}, 
    type table [Alphabet = text, Value = number]
  ), 
  Append = Group & TotalRow
in
  Append
Power Query solution 10 for Pivot with Total Line, proposed by Mihai Radu O:
let
  Source = [
    a = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content][Data], 
    b = Text.Combine(a, ", "), 
    fct = (txt as text, chars as list, del as text) =>
      let
        f1 = Text.Split(Text.Select(txt, chars & {del}), del)
      in
        List.Transform(f1, (x) => try Number.From(x) otherwise x), 
    alf = fct(b, {"A" .. "Z"}, ","), 
    nr = fct(b, {"0" .. "9"}, ","), 
    total = List.Sum(nr), 
    alf1 = List.Sort(List.Distinct(alf)), 
    alfabet = alf1 & {"Total"}, 
    nr1 = List.Transform(
      alf1, 
      (x) => List.Sum(List.Transform(List.Zip({alf, nr}), (z) => if z{0} = x then z{1} else null))
    ), 
    valoare = nr1 & {total}, 
    tbl = Table.FromColumns({alfabet, valoare}, {"Alphabet", "Value"})
  ][tbl]
in
  Source
Power Query solution 11 for Pivot with Total Line, proposed by Maciej Kopczyński:
let
 A = Excel.CurrentWorkbook(){[Name="tblStart"]}[Content],
 B = List.Combine(Table.TransformColumns(A, {{"Data", each Text.Split(_, ", ")}})[Data]),
 C = Table.FromList(B, Splitter.SplitTextByDelimiter("-"), {"Alphabet", "Value"}),
 total = List.Sum(List.Transform(C[Value], each Number.From(_))),
 D = Table.Group(C, {"Alphabet"}, {{"Value", each List.Sum(List.Transform([Value], each Number.From(_)))}}) & hashtag#table({"Alphabet", "Value"}, {{"Total", total}})
in
 D


                    
                  
          
Power Query solution 12 for Pivot with Total Line, proposed by Melissa de Korte:
let
 Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
 T = Table.FromRows(List.TransformMany(Source[Data],
 each Text.Split(_, ", "),
 (x, y) => let p = Text.Split(y, "-") in {p{0}, Number.From(p{1})}
 ), {"Alphabets","Value"}),
 Grouped = Table.Group(T, {"Alphabets"},
 {{"Value", each List.Sum([Value]), Int64.Type}})
in
 Grouped & hashtag#table({"Alphabets", "Value"}, {{"TOTAL", List.Sum( Grouped[Value])}})


                    
                  
          
Power Query solution 13 for Pivot with Total Line, proposed by Aleksandar Kovacevic:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Tbl = Table.SplitColumn(
    Table.FromColumns({List.Combine(List.Transform(Source[Data], each Text.Split(_, ", ")))}, {"A"}), 
    "A", 
    Splitter.SplitTextByDelimiter("-"), 
    {"Alphabet", "V"}
  ), 
  Grp = Table.Sort(
    Table.Group(
      Tbl, 
      "Alphabet", 
      {{"Value", each List.Sum(List.Transform(_[V], (x) => Number.From(x)))}}
    ), 
    "Alphabet"
  ), 
  Res = Table.InsertRows(
    Grp, 
    Table.RowCount(Grp), 
    {[Alphabet = "TOTAL", Value = List.Sum(Grp[Value])]}
  )
in
  Res
Power Query solution 14 for Pivot with Total Line, proposed by Anjan Kumar Bose:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  #"Changed Type" = Table.TransformColumnTypes(Source, {{"Data", type text}}), 
  #"Split Column by Delimiter" = Table.SplitColumn(
    #"Changed Type", 
    "Data", 
    Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), 
    {"Data.1", "Data.2", "Data.3"}
  ), 
  #"Changed Type1" = Table.TransformColumnTypes(
    #"Split Column by Delimiter", 
    {{"Data.1", type text}, {"Data.2", type text}, {"Data.3", type text}}
  ), 
  #"Removed Columns" = Table.RemoveColumns(#"Changed Type1", {"Data.2", "Data.3"}), 
  #"Split Column by Delimiter1" = Table.SplitColumn(
    #"Removed Columns", 
    "Data.1", 
    Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), 
    {"Data.1.1", "Data.1.2"}
  ), 
  #"Changed Type2" = Table.TransformColumnTypes(
    #"Split Column by Delimiter1", 
    {{"Data.1.1", type text}, {"Data.1.2", Int64.Type}}
  ), 
  #"Renamed Columns" = Table.RenameColumns(
    #"Changed Type2", 
    {{"Data.1.1", "Data"}, {"Data.1.2", "Value"}}
  )
in
  #"Renamed Columns"
Power Query solution 15 for Pivot with Total Line, proposed by Anjan Kumar Bose:
let
 Source = Table.Combine({Table1, Table2, Table3}),
 #"Grouped Rows" = Table.Group(Source, {"Data"}, {{"Value", each List.Sum([Value]), type nullable number}}),
 TotalRow = hashtag#table({"Data", "Value"}, {{"total", List.Sum(#"Grouped Rows"[Value])}}),
 FinalTable = Table.Combine({#"Grouped Rows", TotalRow})
in
 FinalTable


                    
                  
          
Power Query solution 16 for Pivot with Total Line, proposed by Ezel K.:
let
 Kaynak = Excel.CurrentWorkbook(){[Name="Tablo1"]}[Content],
 #"Değiştirilen Tür" = Table.TransformColumnTypes(Kaynak,{{"Data", type text}}),
 Sütunböl1 = Table.SplitColumn(#"Değiştirilen Tür", "Data", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Data.1", "Data.2", "Data.3"}),
 #"Değiştirilen Tür1" = Table.TransformColumnTypes(Sütunböl1,{{"Data.1", type text}, {"Data.2", type text}, {"Data.3", type text}}),
 #"Özet Sütunlar Çözüldü" = Table.UnpivotOtherColumns(#"Değiştirilen Tür1", {}, "Öznitelik", "Değer"),
 #"Kaldırılan Sütunlar" = Table.RemoveColumns(#"Özet Sütunlar Çözüldü",{"Öznitelik"}),
 Sütunböl = Table.SplitColumn(#"Kaldırılan Sütunlar", "Değer", Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), {"Değer.1", "Değer.2"}),
 #"Değiştirilen Tür2" = Table.TransformColumnTypes(Sütunböl,{{"Değer.1", type text}, {"Değer.2", Int64.Type}}),
 Kırp = Table.TransformColumns(#"Değiştirilen Tür2",{{"Değer.1", Text.Trim, type text}}),
 İsimlendir = Table.RenameColumns(Kırp,{{"Değer.1", "Harfler"}, {"Değer.2", "Değer"}}),
 #"Gruplanan Satırlar" = Table.Group(İsimlendir, {"Harfler"}, {{"Sayı", each List.Sum([Değer]), type nullable number}})
in
 #"Gruplanan Satırlar"



                    
                  
          
            

  
                  
    
      
        Show translation
      
      
        Show translation of this comment
Power Query solution 17 for Pivot with Total Line, proposed by Oleksandr Mynka:
let
 // FUNCTIONS
 f = (lst, x)=> [
 a = List.Alternate(lst,1,1,x), 
 b = if (x = 1) then a else List.Transform(a,Number.From)
 ][b] ,

 // TRANSFORMATION STEPS
 src = Excel.CurrentWorkbook(){[Name="SourceTable"]}[Content],
 spl = Table.TransformColumns(src,{"Data", Splitter.SplitTextByAnyDelimiter({", ","-"})}),
 cmb = List.Combine(spl[Data]),
 nms = {"Alphabet", "Value"},
 tbl = Table.FromColumns({f(cmb,1),f(cmb,0)},nms),
 gr = Table.Group(tbl,nms{0}, {nms{1}, each List.Sum(_[Value])}),
 sort = Table.Sort(gr,{nms{0},Order.Ascending}),
 total = hashtag#table(nms, {{"TOTAL", List.Sum(gr[Value])}}),
 res = sort & total
in
 res


                    
                  
          

Solving the challenge of Pivot with Total Line with Excel

Excel solution 1 for Pivot with Total Line, proposed by Bo Rydobon 🇹🇭:
=LET(
    x,
    TEXTSPLIT(
        ARRAYTOTEXT(
            A3:A6
        ),
        "-",
        ", "
    ),
    GROUPBY(
        TAKE(
            x,
            ,
            1
        ),
        --DROP(
            x,
            ,
            1
        ),
        SUM
    )
)
Excel solution 2 for Pivot with Total Line, proposed by Rick Rothstein:
=LET(
    t,
    SORT(
        TEXTSPLIT(
            TEXTJOIN(
                ", ",
                ,
                A3:A6
            ),
            "-",
            ", "
        )
    ),
    k,
    TAKE(
        t,
        ,
        1
    ),
    u,
    UNIQUE(
        k
    ),
    s,
    MAP(
        u,
        LAMBDA(
            x,
            SUM(
                FILTER(
                    0+TAKE(
                        t,
                        ,
                        -1
                    ),
                    k=x
                )
            )
        )
    ),
    VSTACK(
        HSTACK(
            u,
            s
        ),
        HSTACK(
            "Total",
            SUM(
                s
            )
        )
    )
)
Excel solution 3 for Pivot with Total Line, proposed by Kris Jaganah:
=LET(
    a,
    TEXTSPLIT(
        CONCAT(
            A3:A6&", "
        ),
        "-",
        ", ",
        1
    ),
    b,
    GROUPBY(
        TAKE(
            a,
            ,
            1
        ),
        --TAKE(
            a,
            ,
            -1
        ),
        SUM
    ),
    VSTACK(
        {"Alphabet",
        "Value"},
        IF(
            ISTEXT(
                b
            ),
            UPPER(
             &   b
            ),
            b
        )
    )
)
Excel solution 4 for Pivot with Total Line, proposed by Julian Poeltl:
=LET(
    T,
    TEXTSPLIT(
        TEXTJOIN(
            ",",
            ,
            A3:A6
        ),
        ,
        ","
    ),
    A,
    TRIM(
        TEXTBEFORE(
            T,
            "-"
        )
    ),
    V,
    --TEXTAFTER(
        T,
        "-"
    ),
    VSTACK(
        HSTACK(
            "Alphabet",
            "Value"
        ),
        GROUPBY(
            A,
            V,
            SUM
        )
    )
)
Excel solution 5 for Pivot with Total Line, proposed by Alejandro Campos:
=LET(
dv, DROP(TEXTSPLIT(CONCAT(A3:A6&", "), "-", ", "),-1),
ta, TAKE(dv,,1),
o, SORT(UNIQUE(ta)),
v, MAP(o, LAMBDA(x, SUM(N(ta=x)*TAKE(dv,,-1)))),
VSTACK({"Alphabet","Value"}, HSTACK(o, v), HSTACK("TOTAL", SUM(v))))
Excel solution 6 for Pivot with Total Line, proposed by Timothée BLIOT:
=LET(
    A,
    WRAPROWS(
        REGEXEXTRACT(
            ARRAYTOTEXT(
                A3:A6
            ),
            "[A-Z]|d+",
            1
        ),
        2
    ),
    GROUPBY(
        TAKE(
            A,
            ,
            1
        ),
        --TAKE(
            A,
            ,
            -1
        ),
        SUM
    )
)
Excel solution 7 for Pivot with Total Line, proposed by Hussein SATOUR:
=LET(a,TEXTSPLIT(ARRAYTOTEXT(A3:A6),"-",", "),GROUPBY(TAKE(a,,1),--TAKE(a,,-1),SUM))
Excel solution 8 for Pivot with Total Line, proposed by Oscar Mendez Roca Farell:
=LET(
    F,
    LAMBDA(
        i,
        TOCOL(
            REGEXEXTRACT(
                CONCAT(
                    A3:A6
                ),
                i,
                1
            )
        )
    ),
    GROUPBY(
        F(
            "[A-Z]"
        ),
        --F(
            "d+"
        ),
        SUM
    )
)
Excel solution 9 for Pivot with Total Line, proposed by Duy Tùng:
=LET(
    a,
    TEXTSPLIT(
        ARRAYTOTEXT(
            A3:A6
        ),
        "-",
        ", "
    ),
    b,
    GROUPBY(
        TAKE(
            a,
            ,
            1
        ),
        --DROP(
            a,
            ,
            1
        ),
        SUM
    ),
    IF(
        b>"",
        UPPER(
            b
        ),
        b
    )
)
Excel solution 10 for Pivot with Total Line, proposed by Sunny Baggu:
=LET(
 _t,
     SORT(
         TEXTSPLIT(
             ARRAYTOTEXT(
                 A3:A6
             ),
              "-",
              ", "
         )
     ),
    
 _a,
     TAKE(
         _t,
          ,
          1
     ),
    
 _b,
     TAKE(
         _t,
          ,
          -1
     ) + 0,
    
 _u,
     UNIQUE(
         _a
     ),
    
 _s,
     MAP(_u,
     LAMBDA(a,
     SUM((_a = a) * _b))),
    
 VSTACK(
     HSTACK(
         _u,
          _s
     ),
      HSTACK(
          "TOTAL",
           SUM(
               _b
           )
      )
 )
)
Excel solution 11 for Pivot with Total Line, proposed by LEONARD OCHEA 🇷🇴:
=LET(d,TEXTSPLIT(CONCAT(A3:A6&", "),"-",", ",1),I,INDEX,GROUPBY(I(d,,1),--I(d,,2),SUM))
Excel solution 12 for Pivot with Total Line, proposed by Abdallah Ally:
=LET(
    a,
    TEXTSPLIT(
        TEXTJOIN(
            ", ",
            ,
            A3:A6
        ),
        "-",
        ", "
    ),
    b,
    TAKE,
    VSTACK(
         {"Alphabet",
        "Value"},
        GROUPBY(
            b(
                a,
                ,
                1
            ),
            --b(
                a,
                ,
                -1
            ),
            SUM
        )
    )
)
Excel solution 13 for Pivot with Total Line, proposed by Anshu Bantra:
=LET(
    
     data_,
     TEXTSPLIT(
         TEXTJOIN(
             ", ",
              ,
              A3:A6
         ),
          ,
          ", "
     ),
    
     VSTACK(
         
          {"Alphabet",
          "Value"},
         
          GROUPBY(
              
               TEXTBEFORE(
                   data_,
                    "-"
               ),
              
               --TEXTAFTER(
                   data_,
                    "-"
               ),
              
               SUM,
               0,
               1
               
          )
          
     )
    
)
Excel solution 14 for Pivot with Total Line, proposed by Md. Zohurul Islam:
=LET(z,A3:A6,hdr,HSTACK("Alphabet","Value"),
a,TEXTSPLIT(ARRAYTOTEXT(z),"-",", "),
b,TAKE(a,,1),c,--DROP(a,,1),d,SORT(UNIQUE(b)),
e,MAP(d,LAMBDA(x,SUM(IF(b=x,c,0)))),
f,VSTACK(hdr,HSTACK(d,e),HSTACK("Total",SUM(e))),
f)
Excel solution 15 for Pivot with Total Line, proposed by Md. Zohurul Islam:
=LET(z,A3:A6,
a,TEXTSPLIT(ARRAYTOTEXT(z),"-",", "),
b,HSTACK("Alphabet","Value"),
c,VSTACK(b,GROUPBY(TAKE(a,,1),--DROP(a,,1),SUM,0,1)),
c)
Excel solution 16 for Pivot with Total Line, proposed by Pieter de B.:
=LET(a,TEXTSPLIT(ARRAYTOTEXT(A3:A6),"-",", "), GROUPBY(TAKE(a,,1),--DROP(a,,1),SUM))
Excel solution 17 for Pivot with Total Line, proposed by Hamidi Hamid:
=LET(
    w,
    DROP(
        TEXTSPLIT(
            CONCAT(
                "/"&A3:A6
            ),
            ", ",
            "/"
        ),
        1
    ),
    x,
    TOCOL(
        MAP(
            w,
            LAMBDA(
                a,
                TEXTBEFORE(
                    a,
                    "-"
                )
            )
        )
    ),
    y,
    TOCOL(
        MAP(
            w,
            LAMBDA(
                a,
                TEXTAFTER(
                    a,
                    "-"
                )
            )
        )
    )*1,
    GROUPBY(
        x,
        y,
        SUM,
        ,
        1
    )
)
Excel solution 18 for Pivot with Total Line, proposed by Asheesh Pahwa:
=LET(t,TEXTJOIN("/",,A3:A6),_t,TEXTSPLIT(t,,{", ","-","/"}),
w,WRAPROWS(_t,2),a,TAKE(w,,1),u,SORT(UNIQUE(a)),m,MAP(u,LAMBDA(x,
SUM((a=x)*--(TAKE(w,,-1))))),
VSTACK(HSTACK(u,m),HSTACK("Total",SUM(m))))
Excel solution 19 for Pivot with Total Line, proposed by ferhat CK:
=LET(a,TEXTSPLIT(TEXTJOIN(", ",,A3:A6),"-",", "),GROUPBY(TAKE(a,,1),--TAKE(a,,-1),SUM))
Excel solution 20 for Pivot with Total Line, proposed by Jaroslaw Kujawa:
=LET(x;TEXTSPLIT(ARRAYTOTEXT(A3:A6);"-";{", ","; "});xx;GROUPBY(TAKE(x;;1);1*TAKE(x;;-1);SUM);HSTACK(UPPER(TAKE(xx;;1));TAKE(xx;;-1)))
Excel solution 21 for Pivot with Total Line, proposed by Ankur Sharma:
=LET(
    a,
     TEXTJOIN(
         ", ",
          ,
          A3:A6
     ),
    
    b,
     TEXTSPLIT(
         a,
          "-",
          ", "
     ),
    
    GROUPBY(
        TAKE(
            b,
             ,
             1
        ),
         --TAKE(
             b,
              ,
              -1
         ),
         SUM
    )
)
Excel solution 22 for Pivot with Total Line, proposed by Meganathan Elumalai:
=LET(a,TEXTSPLIT(CONCAT(A3:A6&", "),"-",", ",1),GROUPBY(TAKE(a,,1),--DROP(a,,1),SUM,0,1))
Excel solution 23 for Pivot with Total Line, proposed by Antriksh Sharma:
=LET(
 a, DROP(REDUCE("", A3:A6, LAMBDA(s, c, VSTACK(s, TEXTSPLIT(c, "-", ", ")))), 1),
 b, GROUPBY(TAKE(a, , 1), --TAKE(a, , -1), SUM, 0, 1),
 VSTACK({"Alphabet", "Value"}, b)
)
Excel solution 24 for Pivot with Total Line, proposed by Imam Hambali:
=LET(
d, TEXTSPLIT(TEXTJOIN(", ",1,A3:A6),"-",", "),
VSTACK({"Alphabet","Value"}, GROUPBY(TAKE(d,,1),TAKE(d,,-1)*1,SUM))
)
Excel solution 25 for Pivot with Total Line, proposed by Eddy Wijaya:
=LET(
d,TOCOL(REDUCE(0,A3:A6,LAMBDA(a,v,VSTACK(a,TRIM(TEXTSPLIT(v,","))))),3),
x,DROP(GROUPBY(LEFT(d),--MID(d,3,5),SUM,,0),1),
VSTACK(C2:D2,x,HSTACK(C10,BYCOL(TAKE(x,,-1),SUM))))
Excel solution 26 for Pivot with Total Line, proposed by Mey Tithveasna:
=LET(
  join, TEXTJOIN(",",,A3:A6),
  split, TEXTSPLIT(join, ",", "-"),
  t, TOCOL(split, 2),
  pairs, WRAPROWS(t, 2),
  l,TRIM( INDEX(pairs,,1)),
  v, --(INDEX(pairs,,2)),
  u, UNIQUE(l),
  tot, MAP(u, LAMBDA(x, SUM(FILTER(v, l=x)))),
  HSTACK(u, tot)
)
Excel solution 27 for Pivot with Total Line, proposed by Milan Shrimali:
=LET(
    A,
    ARRAYFORMULA(
        TRIM(
            SPLIT(
                TOCOL(
                    BYROW(
                        A3:A6,
                        LAMBDA(
                            X,
                            SPLIT(
                                X,
                                ","
                            )
                        )
                    )
                ),
                "-"
            )
        )
    ),
    VSTACK(
        BYROW(
            UNIQUE(
                CHOOSECOLS(
                    A,
                    1
                )
            ),
            LAMBDA(
                X,
                HSTACK(
                    X,
                    SUM(
                        FILTER(
                            --CHOOSECOLS(
                                A,
                                2
                            ),
                            CHOOSECOLS(
                    A,
                    1
                )=X
                        )
                    )
                )
            )
        ),
        HSTACK(
            "TOTAL",
            ARRAYFORMULA(
                SUM(
                    --CHOOSECOLS(
                                A,
                                2
                            )
                )
            )
        )
    )
)
Excel solution 28 for Pivot with Total Line, proposed by Nicolas Micot:
=LET(_joinedText;JOINDRE.TEXTE(", ";;A3:A6);
_split;FRACTIONNER.TEXTE(_joinedText;"-";", ");
_alphabet;CHOISIRCOLS(_split;1);
_value;CHOISIRCOLS(_split;2)+0;
GROUPER.PAR(_alphabet;_value;SOMME))
Excel solution 29 for Pivot with Total Line, proposed by Guillermo Arroyo:
=LET(
    m,
    TEXTSPLIT(
        TEXTJOIN(
            ", ",
            ,
            A3:A6
        ),
        "-",
        ", "
    ),
    PIVOTBY(
        INDEX(
            m,
            ,
            1
        ),
        ,
        --INDEX(
            m,
            ,
            2
        ),
        SUM
    )
)
Excel solution 30 for Pivot with Total Line, proposed by Daniel Garzia:
=LET(
    i,
    TEXTSPLIT(
        TEXTJOIN(
            ", ",
            ,
            A3:A6
        ),
        ,
        ", "
    ),
    PIVOTBY(
        LEFT(
            i
        ),
        ,
        0+RIGHT(
            i,
            LEN(
            i
        )-2
        ),
        SUM
    )
)
Excel solution 31 for Pivot with Total Line, proposed by Mahmoud Bani Asadi:
=LET(
    
    a,
    TEXTSPLIT(
        TEXTJOIN(
            ", ",
            ,
            A3:A6
        ),
        ,
        ", "
    ),
    
    GROUPBY(
        TEXTBEFORE(
            a,
            "-"
        ),
        --TEXTAFTER(
            a,
            "-"
        ),
        SUM
    )
)
Excel solution 32 for Pivot with Total Line, proposed by Maciej Kopczyński:
=LET(
 arr,  tblStart[Data],
 a,   TEXTSPLIT(TEXTJOIN(", ", TRUE, arr), "-", ", "),
 first, CHOOSECOLS(a, 1),
 second, CHOOSECOLS(a, 2) + 0,
 group, VSTACK({"Alphabet","Value"}, GROUPBY(first, second, SUM, 0, 1)),
 group
)
Excel solution 33 for Pivot with Total Line, proposed by Erdit Qendro:
=LET(a,SORT(UNIQUE(TOCOL(REGEXEXTRACT(CONCAT(A3:A6),"[A-Z]",1)))),
b,MAP(a,LAMBDA(r,SUM(REGEXEXTRACT(CONCAT(A3:A6),"(?<="&r&"-)"&"d+",1)+0))),
VSTACK(HSTACK(a,b),HSTACK("TOTAL",SUM(b))))
Excel solution 34 for Pivot with Total Line, proposed by Fredson Alves Pinho:
=UPPER(
    GROUPBY(
        TOCOL(
            REGEXEXTRACT(
                CONCAT(
                    A3:A6
                ),
                "[A-Z]",
                1
            )
        ),
        --TOCOL(
            REGEXEXTRACT(
                CONCAT(
                    A3:A6
                ),
                "d+",
                1
            )
        ),
        SUM
    )
)
Excel solution 35 for Pivot with Total Line, proposed by Ernesto Vega Castillo:
=LET(
    a,
    WRAPROWS(
        REGEXEXTRACT(
            CONCAT(
                A3:A6
            ),
            "[A-Z]+|[0-9]+",
            1,
            1
        ),
        2
    ),
    g,
    GROUPBY(
        TAKE(
            a,
            ,
            1
        ),
        0+TAKE(
            a,
            ,
            -1
        ),
        SUM,
        0,
        1
    ),
    VSTACK(
        {"Alphabet",
        "Value"},
        g
    )
)
_x000D_
Excel solution 36 for Pivot with Total Line, proposed by Craig Runciman:
=LET(a,TEXTSPLIT(SUBSTITUTE(TEXTJOIN(",",,A3:A6)," ",""),"-",","),h,{"Alphabet","Value"},VSTACK(h,GROUPBY(INDEX(a,,1),--INDEX(a,,2),SUM,0,1)))
_x000D_ _x000D_
Excel solution 37 for Pivot with Total Line, proposed by Hussain Ali Nasser:
=LET(d,TEXTSPLIT(TEXTJOIN(", ",,A3:A6),"-",", "),l,INDEX(d,,1),n,--INDEX(d,,2),PIVOTBY(l,,n,SUM))
_x000D_ _x000D_
Excel solution 38 for Pivot with Total Line, proposed by red craven:
=LET(s,TEXTSPLIT(CONCAT(A3:A6&", "),"-",", ",1),g,UPPER(GROUPBY(TAKE(s,,1),--DROP(s,,1),SUM)),IFERROR(--g,g))
_x000D_ _x000D_
Excel solution 39 for Pivot with Total Line, proposed by Ricardo Romero Garcia:
=LET(
    a,
    TEXTSPLIT(
        TEXTJOIN(
            ", ",
            ,
            A3:A6
        ),
        "-",
        ", "
    ),
    GROUPBY(
        TAKE(
            a,
            ,
            1
        ),
        --DROP(
            a,
            ,
            1
        ),
        SUM
    )
)
_x000D_ _x000D_
Excel solution 40 for Pivot with Total Line, proposed by CA Mohit Saxena:
=LET(
    r,
    TEXTSPLIT(
        ARRAYTOTEXT(
            A3:A6
        ),
        "-",
        ", "
    ),
    _r1,
    TAKE(
        r,
        ,
        1
    ),
    u,
    UNIQUE(
        _r1
    ),
    _r2,
    --TAKE(
        r,
        ,
        -1
    ),
    s,
    MAP(
        u,
        LAMBDA(
            a,
            SUM(
                FILTER(
                    _r2,
                    _r1=a
                )
            )
        )
    ),
    VSTACK(
        HSTACK(
            u,
            s
        ),
        HSTACK(
            "Total",
            SUM(
                s
            )
        )
    )
)
=LET(
    r,
    DROP(
        REDUCE(
            "",
            A3:A6,
            LAMBDA(
                a,
                b,
                VSTACK(
                    a,
                    TEXTSPLIT(
                        b,
                        ,
                        ", "
                    )
                )
            )
        ),
        1
    ),
    LET(
        _r1,
        TEXTBEFORE(
            r,
            "-"
        ),
        _r2,
        --TEXTAFTER(
            r,
            "-"
        ),
        u,
        UNIQUE(
        _r1
    ),
        s,
        MAP(
            u,
            LAMBDA(
                x,
                SUM(
                    FILTER(
                        _r2,
                        _r1=x
                    )
                )
            )
        ),
        VSTACK(
            HSTACK(
            u,
            s
        ),
            HSTACK(
                "Total",
                SUM(
                s
            )
            )
        )
    )
)
_x000D_ _x000D_
Excel solution 41 for Pivot with Total Line, proposed by Cuong Pham:
=LET(
    a,
    TEXTJOIN(
        ",",
        ,
        A3:A6
    ),
    b,
    TRIM(
        TEXTSPLIT(
            a,
            "-",
            ","
        )
    ),
    c,
    TAKE(
        b,
        ,
        1
    ),
    d,
    VALUE(
        TAKE(
            b,
            ,
            -1
        )
    ),
    e,
    UNIQUE(
        c
    ),
    f,
    MAP(
        e,
        LAMBDA(
            x,
            SUM(
                FILTER(
                    d,
                    x=c
                )
            )
        )
    ),
    VSTACK(
        HSTACK(
            e,
            f
        ),
        HSTACK(
            "TOTAL",
            SUM(
                d
            )
        )
    )
)
_x000D_ _x000D_
Excel solution 42 for Pivot with Total Line, proposed by Aurélio Zafindaza:
=LET(
    val,
    ARRAYTOTEXT(
        A3:A6
    ),
    splittxt,
    IFERROR(
        VALUE(
            TEXTSPLIT(
                val,
                "-",
                ", "
            )
        ),
        TEXTSPLIT(
            val,
            "-",
            ", "
        )
    ),
    GROUPBY(
        CHOOSECOLS(
            splittxt,
            1
        ),
        CHOOSECOLS(
            splittxt,
            -1
        ),
        SUM,
        0,
        ,
        1
    )
)
_x000D_ _x000D_
Excel solution 43 for Pivot with Total Line, proposed by Jay Agboighale:
=LET(
    n,
    A3:A6,
    t,
    DROP(
        REDUCE(
            0,
            n,
            LAMBDA(
                x,
                y,
                
                LET(
                    v,
                    TEXTSPLIT(
                        y,
                        "-",
                        ","
                    ),
                    IF(
                        y<>"",
                        VSTACK(
                            x,
                            v
                        ),
                        y
                    )
                )
            )
        ),
        1
    ),
    
    a,
    TRIM(
        CHOOSECOLS(
            t,
            1
        )
    ),
    b,
    CHOOSECOLS(
        --t,
        2
    ),
    
    GROUPBY(
        a,
        b,
        SUM
    )
)
_x000D_ _x000D_
Excel solution 44 for Pivot with Total Line, proposed by Mohammad Abou Daher:
=VSTACK(
    {"Alphabet",
    "Value"},
    GROUPBY(
        UPPER(
            FILTER(
                IFERROR(
                    REGEXEXTRACT(
                        TOCOL(
                            TRIM(
                                TEXTSPLIT(
                                    ARRAYTOTEXT(
                                        A3:A12
                                    ),
                                    {"-",
                                    ","},
                                    ,
                                    
                                )
                            )
                        ),
                        "[A-Z]",
                        1,
                        1
                    ),
                    ""
                ),
                IFERROR(
                    REGEXEXTRACT(
                        TOCOL(
                            TRIM(
                                TEXTSPLIT(
                                    ARRAYTOTEXT(
                                        A3:A12
                                    ),
                                    {"-",
                                    ","},
                                    ,
                                    
                                )
                            )
                        ),
                        "[A-Z]",
                        1,
                        1
                    ),
                    ""
                )<>""
            )
        ),
        FILTER(
            IFERROR(
                --TOCOL(
                    TRIM(
                        TEXTSPLIT(
                            ARRAYTOTEXT(
                                        A3:A12
                                    ),
                            {"-",
                            ","},
                            ,
                            
                        )
                    )
                ),
                0
            ),
            IFERROR(
                --TOCOL(
                    TRIM(
                        TEXTSPLIT(
                            ARRAYTOTEXT(
                                        A3:A12
                                    ),
                            {"-",
                            ","},
                            ,
                            
                        )
                    )
                ),
                0
            )<>0
        ),
        SUM
    )
)
_x000D_ _x000D_
Excel solution 45 for Pivot with Total Line, proposed by Muhammed Ödemiş:
=LET(
    x,
    
    LET(
        
         a,
         A3:A6,
        
         b,
         TEXTJOIN(
             ", ",
              TRUE,
              a
         ),
        
         c,
         TEXTSPLIT(
             b,
              {"- ",
              ", "}
         ),
        
         WRAPROWS(
             c,
              2
         )
        
    ),
    
    GROUPBY(
        CHOOSECOLS(
            x,
             1
        ),
         --CHOOSECOLS(
             x,
              2
         ),
         SUM,
        ,
        1
    )
    
)
_x000D_ _x000D_
Excel solution 46 for Pivot with Total Line, proposed by 🍀 Nacho Cardenal:
=LET(_d;DIVIDIRTEXTO(UNIRCADENAS(", ";VERDADERO;A3:A6);"-";", ");_e;ELEGIRCOLS;AGRUPARPOR(_e(_d;1);_e(_d;2)*1;SUMA))
_x000D_ _x000D_
Excel solution 47 for Pivot with Total Line, proposed by Wanderlei Huttel:
= LET(
    
     Text,
     TEXTSPLIT(
          TEXTJOIN(
              ", ",
              0,
              A3:A6
          ),
         "-",
         ", ",
         0
     ),
    
     GROUPBY(
         CHOOSECOLS(
             Text,
             1
         ),
         --CHOOSECOLS(
             Text,
             2
         ),
         SUM,
         0,
         1
     )
    
)
_x000D_

Solving the challenge of Pivot with Total Line with Python

_x000D_
Python solution 1 for Pivot with Total Line, proposed by Konrad Gryczan, PhD:
import pandas as pd
path = "700 Pivot Data.xlsx"
input = pd.read_excel(path, usecols="A", skiprows=1, nrows=5)
test = pd.read_excel(path, usecols="C:D", skiprows=1, nrows=9)
result = (
 input["Data"]
 .str.extractall(r"(w+)-(d+)")
 .rename(columns={0: "Alphabet", 1: "Value"})
 .astype({"Value": int})
 .groupby("Alphabet", as_index=False)["Value"]
 .sum()
)
r2 = pd.concat([result, pd.DataFrame([{"Alphabet": "TOTAL", "Value": result["Value"].sum()}])], ignore_index=True)
print(r2.equals(test))  # True
                    
                  
_x000D_ _x000D_
Python solution 2 for Pivot with Total Line, proposed by Luan Rodrigues:
import pandas as pd
file = r"Excel_Challenge_700 - Pivot Data.xlsx"
df = pd.read_excel(file, usecols='A',skiprows=1).dropna()
df['Data'] = df['Data'].str.split(', ')
df = df.explode('Data')
df[['ALphabet','Value']] = df['Data'].str.split('-',expand=True)
df['Value'] = df['Value'].astype('int')
grp = df.groupby('ALphabet')['Value'].sum().reset_index()
ttl = pd.concat([grp,pd.DataFrame([['TOTAL', grp['Value'].sum()]], columns=['ALphabet', 'Value'])])
print(ttl)
                    
                  
_x000D_ _x000D_
Python solution 3 for Pivot with Total Line, proposed by Anshu Bantra:
import pandas as pd
df = pd.DataFrame(
 {
 'Data': ['A-234', 'E-256', 'D-3673', 'Q-897', 'R-1', 'S-87', 'T-90', 'A-308', 'R-45', 'S-782', 'D-672', 'Q-29']
 }
)
df[['Alphabet', 'Value']] = df['Data'].str.split('-', expand=True)
df['Value'] = df['Value'].astype(int)
df.groupby(by='Alphabet')['Value'].sum()
                    
                  
_x000D_ _x000D_
Python solution 4 for Pivot with Total Line, proposed by Ernesto Vega Castillo:
import pandas as pd
ruta = r"C:excelbichallenge700.xlsx"
df = pd.read_excel(ruta, header=None)
df_rango = df.loc[1:5, 0] # Ajusta índices según el tamaño de tus datos
data = df_rango.str.split(', ').explode().str.split('-')
df_parsed = pd.DataFrame(data.tolist(), columns=["Alphabet", "Value"])
df_parsed["Value"] = pd.to_numeric(df_parsed["Value"], errors="coerce")
df_parsed = df_parsed.dropna() # Eliminar filas con valores NaN
df_parsed = df_parsed[df_parsed["Value"] != 0] # Eliminar valores que sean 0
# Asegurar claves alfabéticas
df_parsed = df_parsed[df_parsed["Alphabet"].str.isalpha()]
result = df_parsed.groupby("Alphabet", as_index=False)["Value"].sum()
result.loc[len(result)] = ["Total", result["Value"].sum()]
print(result)
                    
                  
_x000D_ _x000D_
Python solution 5 for Pivot with Total Line, proposed by Claudiu B.:
import pandas as pd
df = pd.read_excel(r"data.xlsx")
df['data_split'] = df['Data'].str.split(",")
lst = list(df['data_split'])
lst_split = [s.strip().split("-") for l in lst for s in l]
letters = [l[0] for l in lst_split]
numbers = [int(l[1]) for l in lst_split]
letters.append('Total')
numbers.append(sum(numbers))
new_df = pd.DataFrame({'letter':letters, 'number':numbers})
res = (new_df
 .groupby(['letter'])
 .agg(value = ('number', 'sum'))
 .reset_index()
)
res
                    
                  
_x000D_ _x000D_
Python solution 6 for Pivot with Total Line, proposed by Claudiu B.:
a slightly different version:
import pandas as pd
df = pd.read_excel(r"data.xlsx")
df['data_split'] = df['Data'].str.split(",")
df['letter'] = df['data_split'].apply(lambda x: [i.strip().split('-')[0] for i in x])
df['number'] = df['data_split'].apply(lambda x: [int(i.strip().split('-')[1]) for i in x])
temp = df.copy().loc[:, ['letter', 'number']]
df2 = temp.explode(['letter', 'number']).reset_index(drop=True)
res = (df2
 .groupby(['letter'])
 .agg(value = ('number', 'sum'))
 .reset_index()
)
total_row = pd.DataFrame({'letter': 'Total', 'value' : res['value'].sum()}, index=[0])
output = pd.concat([res, total_row], ignore_index=True)
output
                    
                  
_x000D_

Solving the challenge of Pivot with Total Line with Python in Excel

_x000D_
Python in Excel solution 1 for Pivot with Total Line, proposed by Alejandro Campos:
from collections import defaultdict
d = defaultdict(int)
for x in sum(xl("A2:A6", headers=True).values.tolist(), []):
 for pair in x.split(', '):
 parts = pair.split('-')
 if len(parts) == 2:
 k, v = parts
 d[k] += int(v)
d["Total"] = sum(d.values())
pivot_df = pd.DataFrame(d.items(), columns=["Alphabet", "Value"]).sort_values(by='Alphabet').reset_index(drop=True)
                    
                  
_x000D_ _x000D_
Python in Excel solution 2 for Pivot with Total Line, proposed by Anshu Bantra:
df = xl("A2:A6)
df = df.reset_index()
df['Data'] = df['Data'].str.split(", ")
df = df.explode('Data')
df[['Alphabet', 'Value']] = df['Data'].str.split('-', expand=True)
df['Value'] = df['Value'].astype(int)
df.groupby(by='Alphabet')['Value'].sum()
                    
                  
_x000D_ _x000D_
Python in Excel solution 3 for Pivot with Total Line, proposed by Antriksh Sharma:
df = xl("A2:A6", headers = True)
# Split
a = sum(df.values.tolist(),[])
a = sum([x.split(', ') for x in a],[])
a = [x.split('-') for x in a]
df = pd.DataFrame(a, columns= ['Alphabets', 'Value'])
df = df.astype({'Value':float})
df = df.groupby(['Alphabets']).agg(Value = ('Value', 'sum')).reset_index()
total = pd.DataFrame([{'Alphabets':'Total', 'Value':df['Value'].sum()}])
result = pd.concat([df, total], ignore_index = True)
result
                    
                  
_x000D_

Solving the challenge of &Pivot with Total Line with R

_x000D_
R solution 1 for Pivot with Total Line, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
path = "Excel/700 Pivot Data.xlsx"
input = read_excel(path, range = "A2:A6")
test = read_excel(path, range = "C2:D10")
result = input %>%
 separate_rows(Data, sep = ", ") %>%
 separate(Data, into = c("Alphabet", "Value"), sep = "-", convert = TRUE) %>%
 summarise(Value = sum(Value), .by = Alphabet) %>%
 arrange(Alphabet)
r2 = result %>%
 add_row(Alphabet = "TOTAL", Value = sum(result$Value))
all.equal(r2, test)
#> [1] TRUE
                    
                  
_x000D_

Leave a Reply