# Google Sheets: How to use an ArrayFormula that contains a partial range

I have a Google sheet that is filled with a linked Google form. I have added some additional columns to calculate additional values ​​for each row that is added. I want these columns to be calculated automatically when new rows are completed, so I would like to use ARRAYFORMULA ().

Several of my simple formulas work fine, but I can not make the ArrayFormula syntax correct for a formula that uses FILTER () to calculate the maximum value in a column for all cells over the current cell.

``` ```

```Time stamp Name inside or outside? Start time of shift 14:45:59 N on the clock (start) 14:51:02 T Clock-in (start) 14:51:46 N Departure clock 2:45:59 PM 15:03:51 J Clock-in (start) ```

Single cell version (to calculate D6):

`= yes (C6 = "Clock output", Max (FILTER (A \$ 2: A6, A \$ 2: A6 <A6, B \$ 2: B6 = B6, C \$ 2: C6 = "Clock input")) , "(start ) ")`

My (incorrect) attempt in arrayFormula to calculate cells D2 through D12:

`= ArrayFormula (yes (C2: C12 = "Clock output", Max (FILTER (A \$ 2: {A2: A12}, A \$ 2: {A2: A12} <{A2: A12}, B \$ 2: { B2: B12} = {B2: B12}, C \$ 2: {C2: C12} = "Clock input")), "(start)"))`

How can I tell arrayFormula to increment the final cell of the filter range each time, but to keep the start row the same?

I am also open to other approaches besides FILTER (I also tried Vlookup, but I had no luck). What I finally look for is a formula that finds the last "start" time, with the same name tag as the current cell, before the time stamp of the current cell.