## Explanation

In this example, the goal is to sum the first **n** matching values in a set of data. Specifically, we want to sum the first 3 values for both Red and Blue, based on the order they appear in the table. There are 12 values total; 6 entries each for Red and Blue. All data is in Excel Table named **data** in the range B5:C16.

### Example formula

In the example shown, the formula in cell G5, copied down, is:

```
=SUM(TAKE(FILTER(data[Qty],data[Color]=F5),3))
```

Notice the value for **n** is hardcoded as 3. This formula is a good example of nesting one function inside another.

### Extracting matching data

Working from the inside out, the first task is to extract a list of quantities by color. This is done with the FILTER function like this:

```
FILTER(data[Qty],data[Color]=F5)
```

With "Red" in cell F5, the result is an array that contains quantities associated with "Red":

```
{6;5;6;9;6;8}
```

Notice there are 6 numbers in this array, one for each entry where the color is Red.

### Extract first 3 values

The next task is to extract just the first 3 values from the array returned by FILTER. This is done with the TAKE function. FILTER returns the array directly to the TAKE function as the *array* argument, with the *rows* argument hardcoded as 3:

```
TAKE({6;5;6;9;6;8},3) // returns {6;5;6}
```

The TAKE function then returns the first 3 values in the array:

```
{6;5;6}
```

### Sum results

The last step in the problem is to sum the results from FILTER and TAKE. This is done with the SUM function. TAKE returns the first 3 values to SUM:

```
=SUM({6;5;6}) // returns 17
```

And SUM returns 17 as a final result. This is the sum of the first 3 quantities for "Red". When the formula is copied down to cell G6, we get a sum of the first 3 "Blue" quantities.

### Sum last n matching values

To sum the *last* **n** matching values, simply change **n** to a negative number like this:

```
=SUM(TAKE(FILTER(data[Qty],data[Color]=F5),-3))
```

The TAKE function is explained in more detail here.