creating a top of the charts board

Copper Contributor

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 persondeals year to date (Nov)MonthPositonsales persondeals year to date (Oct)Month PositionChange
Sales Person A808021.9Oct1Sales Person A769494.2Sept1 
Sales Person B764431.1Oct2Sales Person C646092.8Sept2 
Sales Person C656019.5Oct3Sales Person B544869.5Sept3 
Sales Person D450066.2Oct4Sales Person E432537.1Sept4 
Sales Person E443488.1Oct5Sales Person F426903.7Sept5 
Sales Person F442634.9Oct6Sales Person E322833.9Sept6 

 

7 Replies

@nick1870 

 

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.

@nick1870 

 

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")

)

)

Mathetes, thank you. I will study this tomorrow.

I will see if I can spot the sequence and apply it to my original with 80 sales people. Thanks again for providing the answer.

Nick

@nick1870 

 

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.

@mathetes 

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 )

@Peter Bartholomew 

 

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.

@mathetes 

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.

image.png

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) )