# Sum top n values with criteria in Excel

This tutorial shows how to **Sum top n values with criteria** in Excel using the example below;

## Formula

=SUMPRODUCT(LARGE((range=criteria)*(values),{1,2,3,N}))

## Explanation

To sum the top n values in a range matching criteria, you can use a formula based on the LARGE function, wrapped inside the SUMPRODUCT function. In the generic form of the formula (above), range represents a range of cells that are compared to criteria, values represents numeric values from which top values are retrieved, and N represents the idea of Nth value.

In the example, the active cell contains this formula:

=SUMPRODUCT(LARGE((color=E5)*(value),{1,2,3}))

Where color is the named range B5:B12 and value is the named range C5:C12.

### Here’s how the formula works

In its simplest form, LARGE returns the “Nth largest” value in a range with this construction:

=LARGE (range,N)

So, for example:

=LARGE (C5:C12,2)

will return the 2nd largest value in the range C5:C12, which is 12 in the example shown.

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 (C5:C12, {1,2,3})

will return the 1st, 2nd, and 3rd largest value C5:C12 in an array like this:{12,12,10}

So, the trick here is to filter the values based on color before LARGE runs. We do this with the expression:

(color=E5)

Which results in an array of TRUE / FALSE values. During the multiplication operation, these values are coerced into ones and zeros:

=LARGE({1;0;1;0;1;1;0;0}*{12;12;10;9;8;8;7;5},{1,2,3})

So the final result is that only values associated with the color “red” survive the operation:

=SUMPRODUCT(LARGE({12;0;10;0;8;8;0;0},{1,2,3}))

and the other values are forced to zero.

Note: this formula won’t handle text in the value range. See below.

### Handling text in values

If you have text anywhere in the value ranges, the LARGE function will throw a #VALUE error and stop the formula from working.

To handle text in the value range, you can add the IFERROR function like this:

=SUM(IFERROR(LARGE(IF((color=E5),value),{1,2,3}),0))

Here, we trap errors from LARGE caused by text values and replace with zero. Using IF inside LARGE requires that the formula be entered with control + shift + enter, so we switch to SUM instead of SUMPRODUCT.