Home » Diagonal Sum Difference

Diagonal Sum Difference

Provide a formula to find the difference between sum of right diagonal and sum of left diagonal. Sum of right diagonal (Green ones) = 58 Sum of left diagonal (Yellow ones) = 31 Difference = 58-31 = 27

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

Solving the challenge of Diagonal Sum Difference with Power Query

Power Query solution 1 for Diagonal Sum Difference, proposed by Rick de Groot:
let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "i45WMlfSUTIyABImQGxoohSrE61kCmQaAzFIztAALGRoBmJbAgkLEAMiZgFVZwQSMlaKjQUA", 
          BinaryEncoding.Base64
        ), 
        Compression.Deflate
      )
    ), 
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t]
  ), 
  #"Changed Type" = Table.TransformColumnTypes(
    Source, 
    {
      {"Column1", Int64.Type}, 
      {"Column2", Int64.Type}, 
      {"Column3", Int64.Type}, 
      {"Column4", Int64.Type}
    }
  ), 
  #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type), 
  #"Added Custom" = Table.AddColumn(
    #"Added Index", 
    "DiagonalLeft", 
    each Table.Column(#"Added Index", Table.ColumnNames(#"Changed Type"){[Index]}){[Index]}
  ), 
  Custom1 = Table.AddColumn(
    #"Added Custom", 
    "DiagonalRight", 
    each Table.Column(#"Added Index", List.Reverse(Table.ColumnNames(#"Changed Type")){[Index]}){
      [Index]
    }
  ), 
  #"Calculated Sum" = List.Sum(Custom1[DiagonalLeft]) + List.Sum(Custom1[DiagonalRight])
in
  #"Calculated Sum"
Power Query solution 2 for Diagonal Sum Difference, proposed by Rick de Groot:
let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "i45WMlfSUTIyABImQGxoohSrE61kCmQaAzFIztAALGRoBmJbAgkLEAMiZgFVZwQSMlaKjQUA", 
          BinaryEncoding.Base64
        ), 
        Compression.Deflate
      )
    ), 
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t]
  ), 
  #"Changed Type" = Table.TransformColumnTypes(
    Source, 
    {
      {"Column1", Int64.Type}, 
      {"Column2", Int64.Type}, 
      {"Column3", Int64.Type}, 
      {"Column4", Int64.Type}
    }
  ), 
  #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1, Int64.Type), 
  #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(
    #"Added Index", 
    {"Index"}, 
    "Attribute", 
    "Value"
  ), 
  #"Added Index1" = Table.AddIndexColumn(#"Unpivoted Other Columns", "Index.1", 0, 1, Int64.Type), 
  #"Inserted Modulo" = Table.AddColumn(
    #"Added Index1", 
    "Modulo", 
    each Number.Mod([Index.1], 4) + 1, 
    type number
  ), 
  #"Filtered Rows" = Table.SelectRows(
    #"Inserted Modulo", 
    each [Index] = [Modulo] or (Table.RowCount(#"Changed Type") + 1 - [Index]) = [Modulo]
  ), 
  #"Calculated Sum" = List.Sum(#"Filtered Rows"[Value])
in
  #"Calculated Sum"
Power Query solution 3 for Diagonal Sum Difference, proposed by Aditya Kumar Darak 🇮🇳:
let
  Source  = Excel.CurrentWorkbook(){[Name = "data"]}[Content], 
  Rows    = Table.RowCount(Source) - 1, 
  Series  = {0 .. Rows}, 
  GreenD  = List.Transform(Series, (f) => Table.ToRows(Source){f}{Rows - f}), 
  YellowD = List.Transform(Series, (f) => Table.ToRows(Source){f}{f}), 
  Result  = List.Sum(GreenD) - List.Sum(YellowD)
in
  Result
Power Query solution 4 for Diagonal Sum Difference, proposed by Aditya Kumar Darak 🇮🇳:
let
  Source  = Excel.CurrentWorkbook(){[Name = "data"]}[Content], 
  Rows    = Table.RowCount(Source) - 1, 
  Series  = {0 .. Rows}, 
  GreenD  = List.Transform(Series, (f) => Record.ToList(Source{f}){Rows - f}), 
  YellowD = List.Transform(Series, (f) => Record.ToList(Source{f}){f}), 
  Result  = List.Sum(GreenD) - List.Sum(YellowD)
in
  Result
Power Query solution 5 for Diagonal Sum Difference, proposed by Venkata Rajesh:
let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "i45WMlfSUTIyABImQGxoohSrE61kCmQaAzFIztAALGRoBmJbAgkLEAMiZgFVZwQSMlaKjQUA", 
          BinaryEncoding.Base64
        ), 
        Compression.Deflate
      )
    ), 
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t]
  ), 
  ColumnNames = Table.FromList(Table.ColumnNames(Source)), 
  #"Changed Type" = Table.TransformColumnTypes(
    Source, 
    {
      {"Column1", Int64.Type}, 
      {"Column2", Int64.Type}, 
      {"Column3", Int64.Type}, 
      {"Column4", Int64.Type}
    }
  ), 
  #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type), 
  #"Left Diagonal" = Table.AddColumn(
    #"Added Index", 
    "Left Diagonal", 
    each Record.Field(_, ColumnNames{[Index]}[Column1]), 
    Int64.Type
  ), 
  #"Right Diagonal" = Table.AddColumn(
    #"Left Diagonal", 
    "Right Diagonal", 
    each Record.Field(_, ColumnNames{Table.RowCount(#"Left Diagonal") - 1 - [Index]}[Column1]), 
    Int64.Type
  ), 
  Result = List.Sum(#"Right Diagonal"[Right Diagonal]) - List.Sum(#"Right Diagonal"[Left Diagonal])
in
  Result
Power Query solution 6 for Diagonal Sum Difference, proposed by Sergei Baklan:
let
  Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content], 
  nRows  = Table.RowCount(Source) - 1, 
  n      = {0 .. nRows}
in
  List.Sum(List.Transform(n, each Record.ToList(Table.ToRecords(Source){_}){nRows - _}))
    - List.Sum(List.Transform(n, each Record.ToList(Table.ToRecords(Source){_}){_}))

Solving the challenge of Diagonal Sum Difference with Excel

Excel solution 1 for Diagonal Sum Difference, proposed by Rick Rothstein:
=LET(A,A2:D5,S,SEQUENCE(4),ABS(SUM(INDEX(A,S,S))-SUM(INDEX(A,SEQUENCE(4,,4,-1),S))))
Excel solution 2 for Diagonal Sum Difference, proposed by John V.:
=LET(s,{1;2;3;4},SUM(INDEX(A2:D5,IF({1,0},5-s,s),s)*{1,-1}))
Excel solution 3 for Diagonal Sum Difference, proposed by محمد حلمي:
=LET(a;A2:D5;b;ROW(A1:A4);SUM(INDEX(a;b;6-ROW(A2:A5))-INDEX(a;b;b)))
Excel solution 4 for Diagonal Sum Difference, proposed by محمد حلمي:
=LET(
V,A2:D5,
A,ROW(V)-1,
SUM(
INDEX(V,A,SORT(A,,-1))-INDEX(V,A,A)))
Excel solution 5 for Diagonal Sum Difference, proposed by 🇰🇷 Taeyong Shin:
=SUM( (CHOOSECOLS(A2:D5, {4,3,2,1})-A2:D5)*MUNIT(ROWS(A2:D5)) )
Excel solution 6 for Diagonal Sum Difference, proposed by Julian Poeltl:
=LET(T,A2:D5,R,ROWS(T),SUM(MAKEARRAY(R,R,LAMBDA(A,B,A=R+1-B))*T)-SUM(MAKEARRAY(R,R,LAMBDA(A,B,A=B))*T))
Excel solution 7 for Diagonal Sum Difference, proposed by Aditya Kumar Darak 🇮🇳:
= SUM(SCAN(
 0,
 SEQUENCE(ROWS(data)),
 LAMBDA(
 a,
 b,
 INDEX(data, b, ROWS(data) - b + 1)
 - INDEX(data, b, b))))
Excel solution 8 for Diagonal Sum Difference, proposed by Aditya Kumar Darak 🇮🇳:
= LET(
 range,
 A2:D5,
 rows,
 ROWS(range),
 seq,
 SEQUENCE(rows),
 green,
 INDEX(range, seq, rows - seq + 1),
 yellow,
 INDEX(range, seq, seq),
 SUM(green - yellow))
Excel solution 9 for Diagonal Sum Difference, proposed by Timothée BLIOT:
=LET(N,COUNTA(2:2),Sequ,SEQUENCE(N),
Start1,A2,Start2,OFFSET(Start1,,N-1),
SUM(OFFSET(Start2,Sequ-1,-Sequ+1))-
SUM(OFFSET(Start1,Sequ-1,Sequ-1)))
Excel solution 10 for Diagonal Sum Difference, proposed by Oscar Mendez Roca Farell:
=SUMPRODUCT((ROW(A2:D5)-1=5-COLUMN(A2:D5))-(ROW(A2:D5)-1=COLUMN(A2:D5));A2:D5)
Excel solution 11 for Diagonal Sum Difference, proposed by Abdallah Ally:
=SUM(INDEX(A2:D5,SEQUENCE(ROWS(A2:D5)),SEQUENCE(ROWS(A2:D5),,ROWS(A2:D5),-1)))-SUM(INDEX(A2:D5,SEQUENCE(ROWS(A2:D5)),SEQUENCE(ROWS(A2:D5))))
Excel solution 12 for Diagonal Sum Difference, proposed by Charles Roldan:
=LAMBDA(x, LET(s, SEQUENCE(ROWS(x)), 
f, LAMBDA(t, SUM(INDEX(x, s, SORT(s, , t)))), 
f(-1) - f(1)))(A1:D4)
Excel solution 13 for Diagonal Sum Difference, proposed by Tolga Demirci, PMP, PMI-ACP, MOS-Expert:
=SUM(INDIRECT(MID(ADDRESS(1;COLUMN(A1:D5));2;1)&ROW(A2:D5)))-SUM(INDIRECT(MID(ADDRESS(1;COLUMN(B2:C5));2;1)&ROW(B2:D5)))-SUM(INDIRECT(MID(ADDRESS(1;COLUMN(A3:D4));2;1)&ROW(A3:D4)))+2*(SUM(INDIRECT(MID(ADDRESS(1;COLUMN(B3:C4));2;1)&ROW(B3:C4))))
Excel solution 14 for Diagonal Sum Difference, proposed by CA Raghunath Gundi:
=SUM(INDEX(B241:E244,SORT(SEQUENCE(4),,-1),SEQUENCE(4)))-SUM(INDEX(B241:E244,SEQUENCE(4),SEQUENCE(4)))
Excel solution 15 for Diagonal Sum Difference, proposed by Jardiel Euflázio:
=LET(
a,ROWS(A2:A5),
b,TOCOL(A2:D5),

SUM(
INDEX(b,SEQUENCE(a,,a,a-1)),
-INDEX(b,SEQUENCE(a,,,a+1))
)
)

Without LET:

=SUM(

INDEX(TOCOL(A2:D5),SEQUENCE(ROWS(A2:A5),,ROWS(A2:A5),ROWS(A2:A5)-1)),
-INDEX(TOCOL(A2:D5),SEQUENCE(ROWS(A2:A5),,,ROWS(A2:A5)+1))

)
Excel solution 16 for Diagonal Sum Difference, proposed by Jardiel Euflázio:
=LET(
a,ROWS(A2:A5),
b,SEQUENCE(a,a),

SUMPRODUCT(

A2:E5,
ISNUMBER(MATCH(b,SEQUENCE(a,,a,a-1),0))
-ISNUMBER(MATCH(b,SEQUENCE(a,,,a+1),0))
)
)
Excel solution 17 for Diagonal Sum Difference, proposed by Victor Momoh (MVP, MOS, R.Eng):
=LET(a,SEQUENCE(,4),b,A2:D5,SUM(INDEX(b,a,4-a+1)-INDEX(b,a,a)))
Excel solution 18 for Diagonal Sum Difference, proposed by Abdelrahman Omer, MBA, PMP:
=SUM(SORTBY(A2:D5,SEQUENCE(,4),-1)*MUNIT(4))-SUM(MUNIT(4)*A2:D5)
Excel solution 19 for Diagonal Sum Difference, proposed by Sergei Baklan:
=LET( n, ROWS( data), SUM( data*CHOOSECOLS( MUNIT(n), SEQUENCE(n,,n,-1) ) - MUNIT(n)*data ) )
Excel solution 20 for Diagonal Sum Difference, proposed by Cary Ballard, DML:
=SUM(TAKE(DROP(WRAPROWS(TOCOL(A2:D5), 3), 1, -2), 4)) -
 SUM(TAKE(WRAPROWS(TOCOL(A2:D5), 5), , 1))
Excel solution 21 for Diagonal Sum Difference, proposed by Md Ismail Hosen:
=LAMBDA(InputSquareMatrix,LET(
 DimensionN, ROWS(InputSquareMatrix),
 Trace, SUM(MAKEARRAY(DimensionN,1,LAMBDA(x,y,INDEX(InputSquareMatrix,x,x)))),
 TraceReverse, SUM(MAKEARRAY(DimensionN,1,LAMBDA(x,y,INDEX(InputSquareMatrix,x,DimensionN-x+1)))),
 Result, TraceReverse-Trace,
 Result
 )
)
Excel solution 22 for Diagonal Sum Difference, proposed by Juliano Santos Lima:
=LET(Green;N(INDIRECT(ADDRESS({1;2;3;4};{4;3;2;1})));Yellow;N(INDIRECT(ADDRESS({1;2;3;4};{1;2;3;4})));SUM(Green-Yellow))

The old fashioned way.
=SUM(INDIRECT(ADDRESS({1,2,3,4},{4,3,2,1})),-SUM(INDIRECT(ADDRESS({1,2,3,4},{1,2,3,4}))))
Excel solution 23 for Diagonal Sum Difference, proposed by Juliano Santos Lima:
=SUM(INDEX(A2:D5,SEQUENCE(4),SEQUENCE(4,,4,-1)),-MUNIT(4)*A2:D5)
Excel solution 24 for Diagonal Sum Difference, proposed by Jeff Blakley:
=LET(data, A2:D5,
 dim, ROWS(data),
 revUnit, SEQUENCE(dim)=SEQUENCE(1, dim, dim, -1),
 SUM(data * (revUnit - MUNIT(dim))))
Excel solution 25 for Diagonal Sum Difference, proposed by Nazmul Islam Jobair:
=LET(
_array,A2:D5,
_rows,ROWS(_array),
_seq,SEQUENCE(_rows),
_seqRev,SEQUENCE(_rows,,_rows,-1),
SUM(INDEX(_array,_seq,_seqRev)-INDEX(_array,_seq,_seq))
)
Excel solution 26 for Diagonal Sum Difference, proposed by Charalampos Dimitrakopoulos:
=REDUCE(0,Numbers,
LAMBDA(x,y,
 IF(ROW(y)=COLUMN(y),
 x-y,
 IF(ROW(y)+COLUMN(y)=ROWS(Numbers)+1,
 x+y,
 x)
 )))
Excel solution 27 for Diagonal Sum Difference, proposed by Riley Johnson:
=LET(
 data, $A$2:$D$5,

 _rows, ROWS( data ),
 _cols, COLUMNS( data ),

 diagonal_sum, LAMBDA(_data,_left?,
 LET(
 _row_indx,
 IF( _left?,
 SEQUENCE( _rows ),
 SEQUENCE( _rows, , _rows, -1 )
 ),
 _col_indx, SEQUENCE( _cols ),
&
 _diagonal_array, INDEX( _data, _row_indx, _col_indx ),
 SUM(_diagonal_array)
 )
 ),

 diagonal_sum( data, FALSE ) - diagonal_sum(data, TRUE )

)
Excel solution 28 for Diagonal Sum Difference, proposed by Agah Dikici:
=SUM(IF(ROW(A2:D5)+COLUMN(A2:D5)=6,1,0)*A2:D5)-SUM(IF(ROW(A2:D5)-COLUMN(A2:D5)=1,1,0)*A2:D5)
Excel solution 29 for Diagonal Sum Difference, proposed by Dawid Sebastian Gałęzyka:
=LET(
vArea, A2:D5,
vSize, ROWS(vArea), 
vRows, SEQUENCE(vSize),
vRDiag, INDEX(vArea, vRows, 1+vSize-vRows),
vLDiag, INDEX(vArea, vRows, vRows),
SUM(vRDiag) -SUM(vLDiag)
)
Excel solution 30 for Diagonal Sum Difference, proposed by Dawid Sebastian Gałęzyka:
=LET(
 vArea, A2:D5,
 vSize, MAX( ROWS(vArea), COLUMNS(vArea) ),
 vHMatrix, SEQUENCE(1, vSize, 1, 1),
 vVMatrix, SEQUENCE(vSize, 1, 1, 1),
 SUMPRODUCT(vArea, (vHMatrix=vSize+1-vVMatrix)-(vHMatrix=vVMatrix))
)
Excel solution 31 for Diagonal Sum Difference, proposed by Wojciech B.:
=SUM(INDEX(A2:D5,SEQUENCE(4,1,4,-1),SEQUENCE(4))) - SUM(MUNIT(4)*A2:D5)

Solving the challenge of Diagonal Sum Difference with Python in Excel

Python in Excel solution 1 for Diagonal Sum Difference, proposed by Aditya Kumar Darak 🇮🇳:
data = xl("A2:D5").values
result = sum(np.fliplr(data).diagonal()) - sum(data.diagonal())
result
                    
                  

Leave a Reply