FIRST
FIRST(set)
One row of a set: the first in schedule order, or blank when the set is empty. Schedule order is the order of the logic (a task comes after the tasks that lead into it, then by task code), not the earliest date, so when you want the row with the earliest start or the least float, use ARGMIN.
Arguments
| Argument | What to give it |
|---|---|
| set | A set of rows: Predecessors, FILTER(…), Assignments, InLinks. |
Examples
Formula=FIRST(FILTER(InLinks, InLinks[Driving link]))[Task code]
The code of a predecessor that drives the task: blank if no link into it is driving.
Formula=FIRST(Assignments)[Resource]
The name of a resource on the task, for a label. Blank when nothing is assigned.
Formula=TEXTJOIN(", ", Predecessors[Task code])
When you want all of them, not one: every predecessor's code in one piece of text, which TEXTJOIN gives in the same schedule order.
Reach for something else when
| You want | Use |
|---|---|
| The row with the smallest or largest value | ARGMIN or ARGMAX |
| The row when there must be exactly one, and an error otherwise | ONLY |
| One particular task by its ID | TASK |
| The earliest date itself, not the task | MIN |
Common questions
Why does the editor say "This gives a set of tasks, not one value per task"?
A formula column holds one value per row, and a set is many. Count it, or take one row from it and read a field:
The editor refuses this=Predecessors
COUNT(Predecessors) or FIRST(Predecessors)[Task code].
Is FIRST the earliest predecessor?
Not by date. It is first in the order of the logic, which is stable but has no meaning for dates. ARGMIN(Predecessors, Predecessors[Start date]) is the one that starts first.
