## Explanation

This formula relies on the FILTER function to retrieve data based on a logical test built with simple expressions and boolean logic:

```
(D5:D14="red")+(D5:D14="blue")
```

After each expression is evaluated, we have the following two arrays:

```
({TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE})+
({FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE})
```

The math operation (addition) coerces TRUE and FALSE values to 1s and 0s:

```
=({1;0;0;0;0;0;1;0;0;0})+({0;1;0;0;1;0;0;1;0;0})
```

The result is a single array like this:

```
={1;1;0;0;1;0;1;1;0;0}
```

This final array is delivered to the FILTER function as the *include* argument, and FILTER returns only rows that correspond to a 1. Or, to put it another way, FILTER removes rows that are zero.

### Not mutually exclusive

In the example above, we are testing for two possible values in a *single* column of data. This means that the two tests are mutually exclusive — both tests can't return TRUE at the same time. However, if you are testing *multiple* columns/fields for values, there is the possibility that more than one logical test will return TRUE. In that case, the final array may contain numbers larger than 1 (i.e. TRUE + TRUE = 2). This makes a difference in some formulas. However, in this case, it doesn't matter, because FILTER will treat any non-zero value as TRUE when evaluating the *include* argument.