=SUMPRODUCT(LARGE(rng,{1,2,N}))

To sum the top values in a range, you can use a formula based on the LARGE function, wrapped inside the SUMPRODUCT function. In the generic form of the formula (above), **rng** represents a range of cells that contain numeric values and **N** represents the idea of Nth value.

In the example, the active cell contains this formula:

=SUMPRODUCT(LARGE(B4:B13,{1,2,3}))

In its simplest form, LARGE will return the "Nth largest" value in a range. For example, the formula:

=LARGE (B4:B13, 2)

will return the 2nd largest value in the range B4:B13 which, in the example above, is the number 9.

However, if you supply an "array constant" (e.g. a constant in the form {1,2,3}) to LARGE as the second argument , LARGE will return an array of results instead of a single result. So, the formula:

=LARGE (B4:B13, {1,2,3})

Will return the 1st, 2nd, and 3rd largest value in the range B4:B13. In the example above, where B4:B13 contains the numbers 1-10, the result from LARGE will be the array {8,9,10}. SUMPRODUCT then sums the numbers in this array and returns a total, which is 27.

Using SUMPRODUCT avoids the complexity of entering an array formula, but it is still processing arrays. You can also write an array formula directly using SUM:

Note that you must enter this formula as an array formula.

When N becomes large it becomes tedious to create the array constant by hand - If you want to sum to the top 20 or 30 values in a large list, typing out an array constant with 20 or 30 items will take a long time. In this case, you can use a shortcut for building the array constant that uses the ROW and INDIRECT functions.

For example, if you want to SUM the top 20 values in a range called "rng" you can write a formula like this:

=SUMPRODUCT(LARGE(rng,ROW(INDIRECT("1:20"))))