As promised, here's an explanation of the formulas...
first the easy one...
This as you probably know, when copied down just lists the largest to the smallest values in the specified range. ROWS($A$1:$A1) acts as the k value, in the first row it evaluates to 1 and so gives largest value, in the 2nd row it evaluates to 2 and so give second largest value and so on....
the second formula:
is an array formula... and is used instead of a much simpler Index/Match formula because there is potential for repeated values from column C.
The regular Index/Match formula (e.g. =Index($B$5:$B$17,Match(G5,$C$5:$C$17,0))) would work if there was a guarantee that no numbers would repeat in the list... this formula only finds the first match and so will repeat the same text string if repeated numbers occur.
So the array formula works almost the same way, except it employees the Small function to get the consecutive matches instead of only the first.
This part of the formula:
gets the position within the range, much like the Match() function does. So it says. If the values in C5:C17 equal what's in G5, record the position number with ROW($C$5:$C$17)-ROW($C$5)+1. The COUNTIF($G$5:G5,G5) part is the k value for the Small() function. It determines k based on how many repeats of the value in G5 exist in the list. The first time it comes to a repeated value, k evaluates to 1, the second time, countif() counts 2 and so k is 2, and so on.
I'm not the best at explaining, but I hope this does help you understand it better. To see the formula in action go to Tools|Formula Auditing|Evaluate Formula... and keep clicking Evaluate... you will see how the formula comes to the final result.
Bookmarks