Nov 23 2020 07:44 AM
hey guys, I produce a leaderboard each month for our top salespeople. its been run the same way for years. but I wanted to give it an overhaul but coming up against my poor excel know-how. I want to create a "top of the charts" league with each individual results with an arrow up and down to show if they have moved in the charts month vs month, ideally with a figure. eg. UP6 or DOWN3
I hope it will be more motivating to our newer starters to see if they are moving up.
this is how I have the table set up so far. I receive the raw data once a month and I create a simple pivot table to show:
sales person | deals year to date (Nov) | Month | Positon | sales person | deals year to date (Oct) | Month | Position | Change |
Sales Person A | 808021.9 | Oct | 1 | Sales Person A | 769494.2 | Sept | 1 | |
Sales Person B | 764431.1 | Oct | 2 | Sales Person C | 646092.8 | Sept | 2 | |
Sales Person C | 656019.5 | Oct | 3 | Sales Person B | 544869.5 | Sept | 3 | |
Sales Person D | 450066.2 | Oct | 4 | Sales Person E | 432537.1 | Sept | 4 | |
Sales Person E | 443488.1 | Oct | 5 | Sales Person F | 426903.7 | Sept | 5 | |
Sales Person F | 442634.9 | Oct | 6 | Sales Person E | 322833.9 | Sept | 6 |
Nov 23 2020 12:22 PM
I changed the sequence of your columns, just because it made more sense to me to show the change in connection with the most recent month's results. The idea behind the formula, though, could still work in the layout you originally had.
This is no doubt also a great example of where the new LET function would be useful. I didn't use it because I have no experience yet, but for my own learning I will go and try it. It would make the formula less lengthy, since it would no longer be necessary to repeat the "MATCH" function so many times.
Nov 23 2020 01:29 PM
Here's the same solution, except using LET to shorten the formula. My first opportunity to use that new function.
Here's the original:
=IFS(
MATCH(A2,$F$2:$F$7,0)=D2,"Steady",
MATCH(A2,$F$2:$F$7,0)<D2,"Down"&TEXT(D2-MATCH(A2,$F$2:$F$7,0),"0"),
MATCH(A2,$F$2:$F$7,0)>D2,"Up"&TEXT(MATCH(A2,$F$2:$F$7,0)-D2,"0")
)
And here it is using LET, which is a way to take that function MATCH(A2,$F$2:$F$7,0) and replace it with MtchVal
=LET(MtchVal,MATCH(A2,$F$2:$F$7,0),
IFS(
MtchVal=D2,"Steady",
MtchVal<D2,"Down"&TEXT(D2-MtchVal,"0"),
MtchVal>D2,"Up"&TEXT(MtchVal-D2,"0")
)
)
Nov 23 2020 01:49 PM
Nov 23 2020 01:55 PM
My solution does depend on the fact that your prior month is sorted in order by their rank in that month. (That's what the MATCH function looks at, coming up with their prior rank based on where they were in the array)
It would also be possible to look at the prior rank number and do the math comparing current rank with that number......
And, of course, presuming that there are new hires and turnover, you could add other conditions to the IFS function to cover "New" -- no need for a label to apply to somebody who has left employment.
Nov 23 2020 03:32 PM
Following up on your ideas! I have not relied on either the sort order or any existing calculation of the ranking for the prior month. Individuals that were not active within the previous month are ranked at n+1 for comparison purposes. The text and colours are all produced by custom number formats.
= LET(
priorPosns, RANK(PriorDeals, PriorDeals),
prior,
XLOOKUP(
person,
priorList,
priorPosns,
1+MAX(priorPosns) ),
change, prior - currentPosition#,
change )
Nov 24 2020 06:51 AM
I never cease to be amazed at how many ways Excel offers to accomplish any given task.
In this case, I could replicate (with a bit more practice on my own) the formula itself. But it never would have occurred to me to use custom formatting in the manner you do; nor, frankly, do I really understand it.
Again, however, I suspect that conditional formatting could serve the same purpose, less elegantly perhas, but yet again, Excel holds multiple ways to get from A to Z.
Nov 24 2020 09:02 AM
I know nothing of the OP's knowledge of Excel but I was confident that you could follow and might be interested. Following the (dubious) principle "If a thing is worth doing, it is worth doing to excess", I could set different number formats from a set of conditional formats. Who says the numbers never lie, in Excel what you see is not necessarily what you have.
Worse than that, it is also possible to use LET to perform the calculations that might otherwise be held in a helper range, but then display both the helper range and the final calculation as a single dynamic formula. It is like a program module written to a cell.
= LET(
currentPos, RANK(currentDeals, currentDeals),
priorPosns, RANK(PriorDeals, PriorDeals),
prior, XLOOKUP(person, priorList, priorPosns,
1+COUNTA(priorList) ),
change, prior - currentPos,
IF({1,0}, currentPos, change) )