Should our approach change when a non technical person has to maintain the solution moving forward.
Read more: End User Friendly SolutionExcel BI Challenge
Here’s another Excel challenge from Excel (Vijay A. Verma) BI that I’ll use as an example.
Given the data at the top of the image, create the summary below that lists Name and Year for all maximum and minimum values.

Solutions
Of the dozens of amazing solutions in the LinkedIn post, here are two:
Single Formula
Efficient single step formula from Meganathan Elumalai:
=LET(l,LAMBDA(f,c,IFNA(HSTACK(c,TEXTSPLIT(CONCAT(TOCOL(IFS(f(F105:M109)=F105:M109,E105:E109&"|"&F104:M104),3)&","),"|",",",1)),"")),VSTACK(l(MAX,"Max"),l(MIN,"Min")))
Power Query
Clear and concise M code from Kris Jaganah:
let
A = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
B = Table.UnpivotOtherColumns(A, {"Name"}, "Year", "Z"),
C = (w)=> [a = Table.SelectRows(B, each [Z] = w(B[Z]) ),
b = Table.AddColumn(a, "Category",(v)=> let
p = if List.Max( B[Z]) = a{0}[Z] then "Max" else "Min"
in if a{0}[Name] = v[Name] then p else null)[[Category],[Name],[Year]]][b]
in
C(List.Max)& C(List.Min)
There are many other amazing solutions in Excel BI’s LinkedIn post.
What’s the Problem?
These solutions work perfectly. If changes are needed, the end user should reach out to the author, right?
The solution creator might be long gone or super busy with another project by the time a minor change is required. Non data professionals would likely struggle to update either solution.
What should we do?
A Question
The data we’ve been given looks similar to Pivot Table data. Meganathan and Kris (and others) created solutions built directly on the data provided:

Should we ask if there is source data behind this and use that to build a solution that’s potentially less complex?
Alternative Solutions
If the raw unaggregated data is already in the same Excel file then we might consider building the solution on that instead. The data might look something like this:

Power Query solution
I loaded this data to Power Query and created a series of 7 very basic queries:

Anyone of us could audit and explain these steps to a non technical person. It’s not fancy and it hurts to see something so basic but sometimes this is easier on the end user.
Also possible is a single query (Table3_all_inPQ) that uses the Given Data:

Here’s the M code for above solution:
let
//LOAD THE EXCEL DATA INTO P.Q.
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
//REARRANGE THE DATA
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Name"}, "Attribute", "Value"),
//RENAME COLUMN HEADERS
#"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute", "Year"},{"Value","Data"}}),
//GET THE MINIMUM VALUE
#"Grouped RowsMIN" = Table.Group(#"Renamed Columns", {}, {{"MIN", each List.Min([Data]), type number}}),
MINval = #"Grouped RowsMIN"{0}[MIN],
//GET THE MAXIMUM VALUE
#"Grouped RowsMAX" = Table.Group(#"Renamed Columns", {}, {{"MAX", each List.Max([Data]), type number}}),
MAXval = #"Grouped RowsMAX"{0}[MAX],
//FILTER TO ROWS THAT HAVE EITHER A MIN OR MAX VALUE
#"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each [Data] = MINval or [Data] = MAXval ),
//SORT DATA BY MAX VALUES FOLLOWED BY MIN VALUES
#"Sorted Rows" = Table.Sort(#"Filtered Rows",{{"Data", Order.Descending},{"Name", Order.Ascending},{"Year", Order.Ascending}}),
//CREATED A COLUMN TO DISPLAY CATEGORY (MAX AND MIN)
#"Added Custom" = Table.AddColumn(#"Sorted Rows", "Category", each if [Data] = MINval then "Min" else "Max"),
//REORDER THE COLUMNS AND REMOVE COLUMNS WE DON'T NEED
#"Reordered Columns" = Table.ReorderColumns(#"Added Custom",{"Category", "Name", "Year", "Data"}),
#"Removed Columns" = Table.RemoveColumns(#"Reordered Columns",{"Data"})
in
#"Removed Columns"
MUCH longer code but my M code knowledge is not at the level of Kris Jaganah, Bill Szysz, Melissa de Korte and others.
Formula solution
If we have the raw unaggregated data we could use this formula to aggregate it:
=PIVOTBY(Table1[[#All],[Name]:[Year]],,Table1[[#All],[Data]],SUM,3,0)
The aggregated data is now in a friendlier layout:

Two simple formulas calculate MAX value (cell AL120) and MIN value (cell AL121), and then this formula:
=VSTACK(
FILTER(AJ3:AL42,AL3:AL42=AL120),
FILTER(AJ3:AL42,AL3:AL42=AL121))
Finally, a simple formula to display MAX and MIN only once each:
=IF(AM126=$AL$120,"Max",IF(AM126=$AL$121,"Min",""))
Boring but so much easier to explain to someone else (and minimize follow up questions!).
About Me

My name is Kevin Lehrbass. Iām a data analyst. I can *think* in Excel formulas easily. I’m training my brain more and more to *think* in M code and DAX…while also reviewing SQL and VBA!
There are so many amazing Excel challenges in LinkedIn. I can’t keep up! My favorites are from: