## Explanation

The IF function is evaluated first with the following logical test:

```
names=F6
```

This generates an array of TRUE / FALSE values, where TRUE corresponds to rows where the name matches the value in F6:

```
{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE}
```

The "value if true" for IF is the named range "times", which returns the full set of times. The result is that the array from the logical test effectively "filters" the time values. When a result is TRUE, the time is passed into array returned by IF. When a result is FALSE, the time value is replaced by the boolean FALSE:

```
{0.000868055555555556;FALSE;FALSE;0.000902777777777778;FALSE;FALSE;0.000914351851851852;FALSE;FALSE;0.000833333333333333;FALSE;FALSE}
```

*Note: Excel times are fractional values, which explains the long decimal values.*

The IF function acts like a filter. Only time values associated with TRUE make it through the filter, other values are replaced with FALSE.

The IF function delivers this array directly to the MIN function, returns the minimum value in the array. FALSE values are automatically ignored.

### Empty cells

Empty cells will cause zero values to be passed into MIN, which can cause unexpected results. To "filter out" empty cells you can add another nested IF like this:

```
=MIN(IF(names=F6,IF(times<>"",times)))
```

### With MINIFS

The MINIFS function, introduced in Excel 2016 via Office 365, is designed to calculate minimums based on one or more criteria without the need for an array formula. With MINIFS, the formula in G6 is:

```
=MINIFS(times,names,F6)
```