CURVE

CURVE(from, to, shape)

A shape for SPREAD: how the work builds up between two dates, from none at the start to all of it at the end. A curve is only ever SPREAD's fourth argument; anywhere else the editor refuses it, because on its own it isn't hours or cost, only a profile.

Arguments

ArgumentWhat to give it
from, toDates: the span the shape is laid over, on the row's calendar. Usually the same dates you give SPREAD.
shapeA name: "even", "front" (most work early), "back" (most work late) or "bell" (slow, fast, slow: an S-curve); front, back and bell are P6's own curves. Or running percentages at equal steps of working time, as plain numbers: 0, 10, 40, 100. Or text from the row, such as an assignment's [Curve]: a name, or the percentages written "0,10,40,100".

Running percentages are cumulative: 0, 10, 40, 100 means 10% of the work is done after the first third of the working time, 40% after two thirds, and all of it at the end. They are read relative to the last one, so 0, 1, 4, 10 is the same shape.

Examples

Formula
=SPREAD(INHOURS([Duration]), [Start date], [Finish date], CURVE([Start date], [Finish date], "back"))

The task's hours, back-loaded: a fit-out task that ramps up toward its finish.

Formula
=SPREAD(INHOURS([Duration]), [Start date], [Finish date], CURVE([Start date], [Finish date], "bell"))

The hours on a bell: mobilization and close-out are slow, the middle is busy.

Formula
=SPREAD(INHOURS([Duration]), [Start date], [Finish date], CURVE([Start date], [Finish date], 0, 10, 40, 100))

A shape of your own: 10% of the hours in the first third of the task, 30% in the second, 60% in the last.

Formula on assignments
=SPREAD([Budgeted units] * [Hourly rate], Task[Start date], Task[Finish date], CURVE(Task[Start date], Task[Finish date], "front"))

On an assignment: its cost, front-loaded over its task, as when materials are bought at the start.

Formula on assignments
=SPREAD([Budgeted units] * [Rate], Task[Start date], Task[Finish date], CURVE(Task[Start date], Task[Finish date], COALESCE([Curve], "even")))

Each assignment on its own curve (what an import from P6 brings), evenly where it has none. The default Budgeted cost over time columns spread this way.

Reach for something else when

You wantUse
The work kept out of some stretches altogetherA level over time as SPREAD's shape, such as a 0/1 mask
The work in proportion to another amountThat amount as SPREAD's shape

Common questions

Why is CURVE refused on its own?

A curve is a share from 0 to 1, not an amount of anything. The editor says: "A CURVE is a shape for SPREAD and goes only there: SPREAD(amount, from, to, CURVE(from, to, "back"))".

The editor refuses this
=CURVE([Start date], [Finish date], "bell")

Which names can I use?

"even", "front", "back" and "bell". Any other is refused with the list: “There's no curve steep: use "even", "front", "back" or "bell", or running percentages”.

Can the curve come from a field?

Yes: give CURVE text, such as an assignment's [Curve]. Each row reads its own: a name or running percentages written with commas ("0,10,40,100"). A row whose text is neither is an error on that row ("There's no curve wavy: …"), and a blank one is blank, so write COALESCE([Curve], "even") to spread those evenly. Percentages written out in the formula itself are plain numbers: CURVE(…, 0, 10, 40, 100).