I have the following table
| Name | Point | Bonus | Total | Pos | 1st | Name | 2nd | Name | |
|---|---|---|---|---|---|---|---|---|---|
| Bob | 10 | 8 | 6 | Point | 11 | 10 | |||
| Sue | 9 | 5 | 3 | Bonus | 12 | 9 | |||
| Joe | 11 | 2 | 4 | Total | 10 | 7 | |||
| Susan | 7 | 9 | 10 | ||||||
| Tim | 1 | 12 | 4 | ||||||
| Ellie | 9 | 8 | 7 |
In G2 I have the following formula
{=LARGE(IF($B$1:$D$1 =$F2, $B:$D),1)}
Which returns the largest Point value, as 11.
In H2 I want to return the name where the Point value is 11. so the value for H2 should be Joe
Then in J2 want to do the same for the 2nd largest value. So the value of J2 should be Bob
CodePudding user response:
I have used following formulas as per attached scheenshot.
G2=LARGE(INDEX($B$2:$D$7,,MATCH(F2,$B$1:$D$1,0)),1)
H2=INDEX($A$2:$A$7,MATCH(G2,INDEX($B$2:$D$7,,MATCH(F2,$B$1:$D$1,0)),0))
I2=LARGE(INDEX($B$2:$D$7,,MATCH(F2,$B$1:$D$1,0)),2)
J2=INDEX($A$2:$A$7,MATCH(I2,INDEX($B$2:$D$7,,MATCH(F2,$B$1:$D$1,0)),0))
And if you have Microsoft-365 then could try below formula to get names directly.
=LET(x,FILTER($B$2:$D$7,$B$1:$D$1=F2),FILTER($A$2:$A$7,x=LARGE(x,1)))

