Home » Highest Marks and Location

Highest Marks and Location

List the names and subjects as well as cell address where the highest marks in the grid appear. In this grid, highest marks is 93.

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

Solving the challenge of Highest Marks and Location with Power Query

Power Query solution 1 for Highest Marks and Location, proposed by Omid Motamedisedeh:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  #"Unpivoted Other Columns" = [
    A = Table.TransformColumns(
      Table.AddIndexColumn(
        Table.UnpivotOtherColumns(Source, {"Names"}, "Subject", "Value"), 
        "Address"
      ), 
      {
        "Address", 
        each {"B" .. "E"}{Number.Mod(_, 4)} & Text.From({2 .. 10}{Number.IntegerDivide(_, 4)})
      }
    ), 
    B = Table.RemoveColumns(Table.SelectRows(A, each _[Value] = List.Max(A[Value])), "Value")
  ][B]
in
  #"Unpivoted Other Columns"
Power Query solution 2 for Highest Marks and Location, proposed by Bo Rydobon 🇹🇭:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Unpivot = Table.UnpivotOtherColumns(Source, {"Names"}, "Subjects", "Sc"), 
  Address = Table.TransformColumns(
    Table.AddIndexColumn(Unpivot, "Address"), 
    {
      "Address", 
      each 
        let
          c = Table.ColumnCount(Source) - 1
        in
          Character.FromNumber(Number.Mod(_, c) + 66) & Text.From(Number.IntegerDivide(_, c) + 2)
    }
  ), 
  Filter = Table.RemoveColumns(Table.SelectRows(Address, each [Sc] = List.Max(Address[Sc])), "Sc")
in
  Filter
Power Query solution 3 for Highest Marks and Location, proposed by Zoran Milokanović:
let
  Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content], 
  Filter = Table.SelectRows(
    Table.UnpivotOtherColumns(
      Table.AddIndexColumn(Source, "Row", 2, 1), 
      {"Row", "Names"}, 
      "Subjects", 
      "Value"
    ), 
    each ([Value] = List.Max(List.Combine(List.Skip(Table.ToColumns(Source)))))
  ), 
  Solution = Table.AddColumn(
    Filter, 
    "Address", 
    each [
      c = List.PositionOf(Table.ColumnNames(Source), [Subjects]) + 1, 
      cn = Text.Combine(
        List.Reverse(
          List.Generate(
            () => [Position = c, Name = Character.FromNumber(65 + Number.Mod(c - 1, 26))], 
            each [Position] > 0, 
            each [
              Position = Number.IntegerDivide([Position] - Number.Mod([Position] - 1, 26), 26), 
              Name     = Character.FromNumber(65 + Number.Mod(Position - 1, 26))
            ], 
            each [Name]
          )
        )
      )
    ][cn]
      & Text.From([Row])
  )[[Names], [Subjects], [Address]]
in
  Solution
Power Query solution 4 for Highest Marks and Location, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Cells = Table.FromColumns(
    {Source[Names]}
      & List.Transform(
        {"B" .. Character.FromNumber(66 + Table.ColumnCount(Source) - 2)}, 
        (x) => List.Transform({2 .. Table.RowCount(Source) + 1}, each x & Text.From(_))
      ), 
    Table.ColumnNames(Source)
  ), 
  MaxVal = List.Max(List.Combine(List.Skip(Table.ToColumns(Source)))), 
  Unpivot = Table.UnpivotOtherColumns(Source, {"Names"}, "Subjects", "Address"), 
  FilterMax = Table.RemoveColumns(Table.SelectRows(Unpivot, each [Address] = MaxVal), "Address"), 
  Sol = Table.AddColumn(
    FilterMax, 
    "Address", 
    each Table.ToRows(Cells){List.PositionOf(Source[Names], [Names])}{
      List.PositionOf(Table.ColumnNames(Source), [Subjects])
    }
  )
in
  Sol

Solving the challenge of Highest Marks and Location with Excel

Excel solution 1 for Highest Marks and Location, proposed by Bo Rydobon 🇹🇭:
=LET(s,B2:E10,TEXTSPLIT(CONCAT(REPT(A2:A10&"_"&B1:E1&"_"&ADDRESS(ROW(s),COLUMN(s),4)&"|",s=MAX(s))),"_","|",1))

=LET(s,B2:E10,L,LAMBDA(a,TOCOL(IF(s,a))),FILTER(HSTACK(L(A2:A10),L(B1:E1),L(ADDRESS(ROW(s),COLUMN(s),4))),L(s)=MAX(s)))
Excel solution 2 for Highest Marks and Location, proposed by Rick Rothstein:
=LET(b,B2:E10,TEXTSPLIT(TEXTJOIN("/",,IF(b=MAX(b),A2:A10&"-"&B1:E1&"-"&CHAR(64+COLUMN(b))&ROW(b),"")),"-","/"))
Excel solution 3 for Highest Marks and Location, proposed by Rick Rothstein:
=LET(b,B2:E10,TEXTSPLIT(TEXTJOIN("/",,IF(b=MAX(b),A2:A10&"-"&B1:E1&"-"&ADDRESS(ROW(b),COLUMN(b),4),"")),"-","/"))
Excel solution 4 for Highest Marks and Location, proposed by John V.:
=LET(s,"-",v,B2:E10,TEXTSPLIT(TEXTJOIN("|",,REPT(A2:A10&s&B1:E1&s&CHAR(64+COLUMN(v))&ROW(v),v=MAX(v))),s,"|"))
Excel solution 5 for Highest Marks and Location, proposed by محمد حلمي:
=LET(b,B2:E10,TEXTSPLIT(CONCAT(TOCOL(IFS(b=MAX(b),A2:A10&"-"&B1:E1&"-"&ADDRESS(ROW(b),COLUMN(b),4)),2)&"/"),"-","/",1))
Excel solution 6 for Highest Marks and Location, proposed by Kris Jaganah:
=LET(a,B2:E10,b,TOCOL(ADDRESS(ROW(a),COLUMN(a),4)),c,TOCOL(a),d,COLUMNS(a),e,INDEX(A2:A10,FLOOR(SEQUENCE(ROWS(c),,,1/d),1)),f,"Subject "&SCAN(0,b,LAMBDA(x,y,IF(x=d,1,x+1))),FILTER(HSTACK(e,f,b),c=MAX(c)))
Excel solution 7 for Highest Marks and Location, proposed by Timothée BLIOT:
=LET(A,B1:E1,B,A2:A10,D,B2:E10,E,HSTACK(TOCOL(IF(D<>B,B)),TOCOL(IF(D<>A,A)),TOCOL(D)),F,FILTER(TAKE(E,,2),DROP(E,,2)=MAX(D)),
HSTACK(F,MAP(SEQUENCE(ROWS(F)),LAMBDA(x,SUBSTITUTE(CELL("address",INDEX(D,XMATCH(INDEX(F,x,1),B),XMATCH(INDEX(F,x,2),A))),"$","")))))
Excel solution 8 for Highest Marks and Location, proposed by Hussein SATOUR:
=TEXTSPLIT(
 LET(
 v, B2:E10, s, B1:E1, n, A2:A10,
 a, IFNA(COLUMN(v), s), b, IFNA(ROW(v), s),
 c, FILTER(TOCOL(a & "," & b), TOCOL(v) = 93),
 TEXTJOIN(";",,
 INDEX(n, --TEXTAFTER(c, ",") - MIN(b) + 1) & "/" &
 INDEX(s, --TEXTBEFORE(c, ",") - MIN(a) + 1) & "/" &
 ADDRESS(--TEXTAFTER(c, ","), --TEXTBEFORE(c, ","), 4)
 )), "/", ";")
Excel solution 9 for Highest Marks and Location, proposed by Oscar Mendez Roca Farell:
=LET(_m, B2:E10,_n, TOCOL(IF(_m=MAX(_m), 10*ROW(_m)+COLUMN(_m), NA()), 3),_f, INT(_n/10),_c, MOD(_n, 10), HSTACK(INDEX(A1:A10,_f), INDEX(A1:E1,_c), ADDRESS(_f,_c, 4)))
Excel solution 10 for Highest Marks and Location, proposed by Duy Tùng:
=LET(a,B2:E10,f,LAMBDA(v,TOCOL(IFS(a=MAX(a),v),3)),HSTACK(f(A2:A10),f(B1:E1),f(ADDRESS(ROW(a),COLUMN(a),4))))
Excel solution 11 for Highest Marks and Location, proposed by Sunny Baggu:
=LET(_tbl,TEXTSPLIT(TEXTJOIN(";",,A2:A10&","&B1:E1&","&ADDRESS(ROW(B2:E10),COLUMN(B2:E10),4)&","&B2:E10),",",";"),
FILTER(DROP(_tbl,,-1),TAKE(_tbl,,-1)+0=MAX(B2:E10)))
Excel solution 12 for Highest Marks and Location, proposed by Sunny Baggu:
=LET(
 _names, TOCOL(IFNA(A2:A10, B1:E1)),
 _sub, TOCOL(IFNA(B1:E1, B2:E10)),
 _address, TOCOL(MAP(B2:E10, LAMBDA(a, ADDRESS(ROW(a), COLUMN(a), 4)))),
 _marks, TOCOL(B2:E10),
 FILTER(HSTACK(_names, _sub, _address), _marks = MAX(B2:E10))
)
Excel solution 13 for Highest Marks and Location, proposed by Md. Zohurul Islam:
=LET(p,A2:A10,q,B1:E1,s,B2:E10,mx,MAX(s),
hdr,HSTACK("Names","Subjects","Address"),
f,LAMBDA(a,b,TOCOL(IFNA(a,b))),
u,IF(s=mx,ADDRESS(ROW(s),COLUMN(s),4),""),
v,FILTER(HSTACK(f(p,q),f(q,p),TOCOL(u)),TOCOL(s)=mx),
VSTACK(hdr,v))
Excel solution 14 for Highest Marks and Location, proposed by Charles Roldan:
=LET(Names, A2:A10, Subjects, B1:E1, Scores, B2:E10, Headers, G1:I1, 
VSTACK(Headers, TEXTSPLIT(TEXTJOIN(";", TRUE, 
REPT(Names & "," & Subjects & "," & 
ADDRESS(ROW(Scores), COLUMN(Scores), 4), 
Scores = MAX(Scores))), ",", ";")))
Excel solution 15 for Highest Marks and Location, proposed by Tolga Demirci, PMP, PMI-ACP, MOS-Expert:
=HSTACK(TEXTSPLIT(TEXTJOIN("; ";;IF(B2:E10=MAX(B2:E10);A2:A10;"")&IF(B2:E10=MAX(B2:E10);", "&B1:E1;""));;"; ");LET(r;TEXTSPLIT(TEXTJOIN("; ";;IF(B2:E10=MAX(B2:E10);A2:A10;"")&IF(B2:E10=MAX(B2:E10);", "&B1:E1;""));;"; ");MID(ADDRESS(1;MAP(TEXTAFTER(r;", ");LAMBDA(a;MATCH(a;B1:E1;0)+1)));2;1)&RIGHT(ADDRESS(MAP(TEXTBEFORE(r;", ");LAMBDA(b;MATCH(b;A2:A10;0)+1));1);1)))
Excel solution 16 for Highest Marks and Location, proposed by Rayan S.:
=LET(
 array, A1:E10,
 n, B2:E10,
 s, B1:E1,
 c, A2:A10,
 h, TOCOL(IFNA(EXPAND(s, COUNTA(n) / COUNTA(s)), s), FALSE),
 cc, TOCOL(IFNA(EXPAND(c, , COUNTA(n) / COUNTA(c)), c), FALSE),
 t, HSTACK(cc, h),
 sol, FILTER(t, TOCOL(n) = LARGE(n, 1)),
 ref, UNICHAR(XMATCH(TAKE(sol, , -1), s) + 65) & XMATCH(TAKE(sol, , 1), c) + 1,
 HSTACK(sol, ref)
)

&&&

Leave a Reply