Gantt Chart with Dependencies in Excel

Link two tasks, and every date after them takes care of itself

Every spreadsheet Gantt chart arrives at the same moment. A task slips by two days, you drag its bar across, and then you sit there working out by hand which of the other forty bars have to move with it — and which can stay exactly where they are.

Dependencies are the fix for that. You describe the relationships between tasks once, in a column, and from then on the schedule works out the consequences itself. This page explains how they behave, using one real project followed from the first day to the last, and shows what our Excel template does with them.

The short version

  • A dependency is a link that says this task waits for that one.
  • Set it once, and every date after it stays correct on its own. You stop retyping dates.
  • There are four kinds. Finish to start — B begins after A ends — covers nearly everything.
  • Lag is a wait built into a link: plaster drying, a delivery, a notice period. A negative lag lets two tasks overlap instead.
  • Float is how long a task can slip before the finish date moves. Tasks with none are on the critical path, and those are the ones to watch.

Watch it done, start to finish

Every step on this page in one take — linking two tasks by dragging one bar onto another, using the Edit Task form when you need more control, and what happens to the plan when a task runs late.

Creating task dependencies in Gantt Excel — 5 minutes 36 seconds

01 What a dependency actually is

Put the vocabulary aside for a minute. A dependency is a rule you write down once so that the plan can keep applying it without you.

The units cannot go in until the plaster has dried. Record that as a link between two rows and the schedule knows it permanently. Move the plastering and the units move. Shorten the plastering and the units come forward. You never do that arithmetic again.

There is a single test for whether two tasks are genuinely linked.

If I moved this one, would that one have to move?

If the answer is yes, it is a dependency. If the honest answer is “not really, it would just be a bit awkward”, then it is not one, and linking them anyway invents a delay that does not exist on site. That mistake is common enough that it has its own section further down.

02 One project, followed all the way through

Everything below uses the same job: a kitchen refit starting Monday 5 January. Twelve tasks, one crew, and a worktop supplier who works to their own timetable. Small enough to hold in your head, awkward enough to be honest.

The Waits for column is the whole plan in one place. Read it as ordinary English — that is genuinely all a dependency is. Nobody typed a start or a finish date below the first row; every one of them was worked out from that column.

TaskDaysWaits forStartFinish
1Strip out old kitchen2Nothing — the job starts hereMon 5 JanTue 6 Jan
2First-fix plumbing3Starts after Strip out old kitchenWed 7 JanFri 9 Jan
3First-fix electrics3Starts with First-fix plumbingWed 7 JanFri 9 Jan
4Plastering2Starts after First-fix electricsMon 12 JanTue 13 Jan
5Fit units4Starts 3 days after PlasteringMon 19 JanThu 22 Jan
6Appliances delivered10Finishes when Fit units finishesFri 9 JanThu 22 Jan
7Worktop template1Starts after Fit unitsFri 23 JanFri 23 Jan
8Worktop fabrication5Starts after Worktop templateMon 26 JanFri 30 Jan
9Worktop fitted1Starts after Worktop fabricationMon 2 FebMon 2 Feb
10Light fittings ordered12Nothing — it can be done any timeMon 5 JanTue 20 Jan
11Second fix2Starts after Worktop fitted and Light fittings orderedTue 3 FebWed 4 Feb
12Tiling and painting3Starts after Second fixThu 5 FebMon 9 Feb
5 Jan M T W T F 12 Jan M T W T F 19 Jan M T W T F 26 Jan M T W T F 2 Feb M T W T F 9 Feb M T W T 1 Strip out old kitchen 2 First-fix plumbing 3 First-fix electrics 4 Plastering 5 Fit units 6 Appliances delivered 7 Worktop template 8 Worktop fabrication 9 Worktop fitted 10 Light fittings ordered 11 Second fix 12 Tiling and painting 9 days float finish 9 Feb

The plan as drawn. Red bars sit on the critical path — the chain that decides the finish date. Green bars have slack. Every arrow is one line of the Waits for column, drawn.

Three of those lines are worth stopping on.

Row 3 starts with the plumbing, not after it. The electrician does not wait for the plumber to finish. Both need the walls open, both start the moment the room is stripped, and they work around each other for three days. Make the electrics wait for the plumbing to finish instead and this plan comes out three working days longer than the job really is, finishing on Thursday 12 February.

Row 5 waits three days longer than it has to. Those three days are not work. They are plaster drying. No one is on site, nothing is being spent, and the calendar moves anyway. A wait like that built into a link has a name — lag — and section 05 is about it.

Row 6 runs backwards from how most people think. The appliance delivery is not driving the unit fitting — the unit fitting is driving the delivery. What matters is that the appliances land as the units go in. Arrive a fortnight early and you have a fridge-freezer in the hallway; arrive late and a fitter stands around. That is a finish-to-finish link, and it is the one most plans quietly leave out.

Everything else is an ordinary finish-to-start link, which is what most of any plan turns out to be.

03 Then the plasterer does not turn up

He is double-booked. Plastering moves from Monday to Wednesday. Two days.

5 Jan M T W T F 12 Jan M T W T F 19 Jan M T W T F 26 Jan M T W T F 2 Feb M T W T F 9 Feb M T W T 1 Strip out old kitchen 2 First-fix plumbing 3 First-fix electrics 4 Plastering 5 Fit units 6 Appliances delivered 7 Worktop template 8 Worktop fabrication 9 Worktop fitted 10 Light fittings ordered 11 Second fix 12 Tiling and painting 11 days float finish 11 Feb — two days late

The same plan, two days later on one task. Dotted outlines show where each bar used to be.

Seven more bars moved behind it. Two of them have no obvious connection to plastering at all: the worktop fabrication, which happens in a workshop twenty miles away, and the tiling, three weeks downstream. The delivery window for the appliances quietly slid too, because it is tied to the end of the unit fitting. The finish date went from Monday 9 February to Wednesday 11 February.

Working that out by hand is maybe ten minutes of careful tracing. It is also precisely the sort of careful tracing people skip when they are busy, which is how a plan stops being true without anyone noticing.

Now put the same two days somewhere else.

The same two days, lost on two different tasks.Plasteringzero float — on the critical path+2 daysThe finish date moves two days. There is nowhere for the delay to go.Light fittings orderednine working days of floatfloat+2 daysNothing moves. Seven days of slack are still spare afterwards.

Float is the difference. Plastering has none, so every day it slips is a day the project slips. The light fittings have nine days spare before anyone needs them, so the same delay costs nothing at all.

This is the part that changes how people run a job. Two identical delays, two completely different outcomes, and no way to tell them apart by looking at the tasks. Float is not something a task has on its own — it emerges from the whole web of links, and it moves every time anything else does.

04 The four types, and the two you will actually use

There are four ways to link two tasks. You will use the first constantly, the second fairly often, the third when you remember it exists, and the fourth almost never.

FSFinish to startB cannot start until A finishesABStrip out the old kitchen, then run the new pipework.Nine times out of ten, this is the one.SSStart to startB cannot start until A startsABThe electrician can start once the plumber has, not before— they need the walls open together.For work that runs alongside, not after.FFFinish to finishB cannot finish until A finishesABThe appliances must land as the units go in — not weeksearly, with nowhere to store them.For work that has to land together.SFStart to finishB must finish before A startsABClear the garage before the delivery lorry needs to unloadthe new units into it.Rare. The least-used of the four by a long way.

Finish to start is the workhorse. If it were the only link type you ever used, your plan would still be broadly right. Everything physical tends to work this way: you cannot plaster a wall you have not wired.

Start to start is for work that runs alongside rather than after. Two trades in the same room, a test team that can begin once development has begun, a marketing push that starts when the build starts. Neither task waits for the other to finish; the second simply cannot begin first.

Finish to finish is the one people skip and then miss. It is for work that has to land together — a delivery timed to an installation, documentation that must be ready when the thing it documents is ready, a training session that has to be done by the time a system goes live.

Start to finish is genuinely rare — the least-used of the four by a long way — and most articles on this subject pad themselves out by pretending otherwise. It is a just-in-time hand-off: the successor has to be finished by the time the predecessor starts. Clear the garage before the lorry arrives to unload into it. Get the driveway swept before the skip lands on it. If you find yourself reaching for start-to-finish for anything else, it is worth checking you have not simply got the two tasks the wrong way round.

05 Lag and lead time

A link says what waits. Lag and lead say how long.

LAGA wait that is not workPlasteringFit units3 daysPlastering has to dry before the units go on it. Nobody ison site. Nothing is being spent. The calendar still moves.LEADA deliberate overlapPlasteringFit units2 daysThe worktop fitter templates the first run while thejoiner is still finishing the last. Two days bought back.

Lag is the wait that is not work. Concrete curing. Paint drying. A supplier’s lead time. A fourteen-day notice period. A planning department that answers when it answers. The clock runs, nobody is on site, and no schedule that ignores it is telling the truth.

Every lag is counted in working days, on the calendar of the resource doing the work, so weekends and that person’s holidays never eat into it. Leave the field empty and it stores zero, which is what you want almost every time.

Lead is the reverse — a deliberate overlap, written as a negative lag. Set a finish-to-start link to -2 and the next task starts two working days before its predecessor finishes. The worktop fitter can template the first run while the joiner is still fixing the last unit.

06 Reading your links back

Links are made in two places, and neither involves typing anything cryptic: the Dependencies tab of the task form, where you pick the predecessor, the type and the lag from lists, or a drag of one task’s bar onto the row of the task it should wait for, which makes a plain finish-to-start link in a single gesture.

Underneath that, the file keeps its own record. A WBS Predecessors column and a WBS Successors column sit on the sheet, hidden by default and read-only, holding those same links written as short codes. Most people never open them. The reason to unhide one is auditing: a whole plan’s worth of “what is this actually waiting on?” in one column you can read down in a single pass, instead of opening forty task forms.

They are rebuilt from your links on every recalculation, so typing into one changes nothing. Here is the code taken apart.

What the read-only WBS Predecessors column shows you4FS3|4The WBS number of the task it waits forThe WBS number, not the row number. On an indented plan the two driftapart, and this column always means WBS.FSThe link typeOne of FS, SS, FF or SF. Finish to Start is the default and by far themost common.3The lag, in working daysThree working days of gap after the link. A negative figure here is alead, letting the two tasks overlap.|The separatorEvery entry ends with a pipe, including the last. Two predecessors readas 9 FS 0|10 FS 0| in one cell.

A task can wait for as many others as it needs. Row 11 in the plan above reads 9 FS 0|10 FS 0|: second fix waits for the worktop to be fitted and for the light fittings to have arrived. Every link is a “no earlier than” floor rather than a fixed date, so the task is scheduled from whichever predecessor holds it up longest — and it does not care which one that turns out to be on the day.

That is also why a plan tightens as it grows. Each extra predecessor can only push a task later, never earlier, so the more honest you are about what a task really waits for, the more realistic — and usually the longer — the schedule becomes.

07 Five ways this goes wrong

1

Linking tasks that are merely related. Two jobs can be about the same thing without either needing the other to finish. Link them anyway and you have manufactured a delay. The plan will report a finish date later than it needs to be, and nobody looking at it will be able to see why.

2

Using a link to mean “the same person is doing both”. Dave cannot paint two rooms at once, so the two rooms get linked finish-to-start. The dates come out right and the plan now lies about the reason. Hire a second painter and it still insists the rooms must happen in sequence. That is a resource constraint, not a dependency, and it belongs in the resource calendar.

3

One long unbranched chain. If every task has exactly one predecessor and one successor, you have written a numbered list wearing a Gantt chart costume. Real projects fan out and rejoin. A plan with no parallel work has nothing to compress, and its critical path is simply everything.

4

Waiting on a whole phase when you only need one task inside it. A summary row can be a predecessor, and its rolled-up dates drive the link — which means the successor waits for the last thing in that phase, including the parts you did not care about. Link task to task, and let the phase heading roll the dates up on its own. (The reverse is not even possible: a summary task cannot be given a predecessor, because its dates belong to its children.)

5

Building a loop. Each link looks reasonable on its own, and together they describe a project that can never begin.

Every link is reasonable on its own. Together they describe a project that can never start.Sign off the budgetGet the quotesAgree the scopeA scheduling engine refuses the third link and names the loop. A spreadsheet formula just returns 0 and carries on.

Loops are easy to create and hard to see, because you never look at all three links at the same time. This is one of the few places where a scheduling engine earns its keep instantly: it refuses the link that closes the circle and tells you which tasks are involved. A hand-built spreadsheet formula gives you a circular reference warning at best, and a silent zero at worst.

08 Why a plain spreadsheet struggles with this

You can get further than you might expect with a formula. Give yourself a Start column and a Duration column, and the start of the next task is roughly:

=WORKDAY(C2, D2)

That genuinely works. It even skips weekends. It is a real finish-to-start dependency, and for a ten-row plan that runs in a single line, it is enough.

Then the job gets normal.

1

A task waits for two others, so the formula becomes MAX of two WORKDAY calls. Then three.

2

One link is start-to-start, which is a different formula shape entirely. Another is finish-to-finish, which is a third.

3

Lag arrives, and so does bank holidays, so every formula grows another argument pointing at a range that has to be absolute.

4

Somebody inserts a row, and every reference below it quietly shifts by one.

All of that is survivable. It is tedious, and it fails silently rather than loudly, but a determined person can keep it standing.

What cannot be done in a cell formula is find the critical path.

Float is not a property of a task. It belongs to the network as a whole, and working it out means walking forward through every chain to find the earliest each task could possibly happen, then walking backward from the finish date to find the latest each one could happen without pushing the end. Two full passes over the plan, in dependency order, every time anything changes. That is an algorithm, not a cell reference — and any attempt to write it as one collapses into a circular reference, because the answer for each task depends on the answers for the tasks that depend on it.

Which is the honest reason most spreadsheet Gantt charts stop at coloured bars.

09 What this template does with all of it

Gantt Excel is an ordinary Microsoft Excel workbook with that scheduling engine already inside it. You type tasks into a grid and set what each one waits for. It works out the dates, draws the bars, finds the critical path, and redoes all three every time you change something.

LINKS

All four types, plus lag and lead

Finish-to-start, start-to-start, finish-to-finish and start-to-finish, with a lag or a lead on any of them, and as many predecessors per task as the work needs.

CALENDARS

Real working days

Weekends, holidays and per-person working patterns are counted properly, so a four-day task lands where it really lands.

CONSEQUENCE

The critical path, kept current

The chain that decides your finish date, identified automatically and re-identified on every change, so you always know which slip matters.

Two ways to make a link, depending on how much control you want. Drag a task’s bar onto the row of the task it should wait for and you get a plain finish-to-start link in one gesture — which is most links, most of the time. Open the task form’s Dependencies tab when you want to choose the type or set a lag.

Links that cannot be scheduled are refused at the moment you make them rather than accepted and quietly ignored, and each refusal says why: a task cannot depend on itself, a duplicate link is turned away, and anything that would close a loop is blocked — the predecessor picker leaves those tasks out of the list in the first place.

It runs in Microsoft Excel on Windows and Mac. Nothing to install, no account, and the file lives wherever your files live.

The step-by-step guide to linking tasks → · The critical path and float → · Creating your first chart → · What else is in the template →

10 Every term on this page, in one line each

Written for anyone meeting this vocabulary for the first time — including students, who get handed all of it at once and none of it in plain English.

TaskA piece of work with a start, a length and an end. One row, one bar.
MilestoneA moment rather than a stretch of work — an approval, a delivery, a go-live. No duration, so it is drawn as a diamond instead of a bar.
DependencyA link between two tasks saying one has to wait for the other. Also called a link or a relationship.
PredecessorThe task that comes first — the one being waited for.
SuccessorThe task that waits. The link is stored here, which is why you open the successor to create one.
Finish to startThe ordinary link. B cannot begin until A has finished. Strip the kitchen out, then run the pipework.
Start to startB cannot begin until A has begun. For trades working alongside each other rather than in a queue.
Finish to finishB cannot finish until A finishes. For work that has to land together, like a delivery timed to an installation.
Start to finishB has to be finished by the time A starts. Rare. Clear the garage before the lorry arrives.
LagA wait built into a link, counted in working days. Three days for plaster to dry before anything goes on the wall.
LeadThe opposite of lag, written as a negative number. Lets the second task start before the first has quite finished.
DurationHow many working days a task takes. Not the same as how many days pass — four days of work across a weekend spans six.
Working calendarWhich days a person actually works, and which are holidays. Dates are counted against it rather than against the plain calendar.
FloatHow long a task can slip before it starts pushing the project’s finish date. Also called slack.
Critical pathThe chain of linked tasks with no float. Every day one of them slips, the whole project slips. Every other delay is cheaper than it looks.
Summary taskA phase heading. It has no dates of its own — it spans whatever sits underneath it. Also called a parent.
WBS numberThe outline number of a row: 2, then 2.1, 2.2 for the tasks inside it. It is how links refer to each other.
Circular dependencyA loop — A waits for B, B waits for C, C waits for A. It describes a project that can never start, so it is refused.
Auto-scheduleThe plan working its own dates out from your links, instead of you typing them.

11 Common questions

Can Excel do Gantt chart dependencies?
Not on its own. Excel has no concept of one task waiting for another — a stacked bar chart draws whatever dates you give it. You can approximate finish-to-start links with WORKDAY formulas, but multiple predecessors, the other three link types, lag and the critical path all need scheduling logic that a cell formula cannot express. A template with that logic built in handles it for you.
How do I show dependencies in an Excel Gantt chart?
Two ways in Gantt Excel. Drag the bar of the task that waits onto the row of the task it waits for, confirm, and you get a finish-to-start link. Or open that task’s form, go to the Dependencies tab, pick the predecessor, choose the type and lag, and click Add. Either way the arrow is drawn and the dates reschedule immediately. The link is always stored on the task that waits, so that is the one you open. Full instructions →
What does 4 FS 3| mean in the WBS Predecessors column?
It means “wait for task 4 to finish, then wait three more working days” — and you will never have to type it. Taken apart: 4 is the WBS number of the task this one waits for, the WBS number rather than the row number. FS is the link type, finish-to-start. 3 is the lag in working days. The | ends the entry, and every entry has one, so a task with two predecessors reads 9 FS 0|10 FS 0| in a single cell. The column is hidden by default and read-only — it is rebuilt from your links every time the schedule recalculates, so it is something to read, never something to fill in.
What are the four types of task dependency?
Finish-to-start (B starts after A finishes), start-to-start (B starts when A starts), finish-to-finish (B finishes when A finishes) and start-to-finish (B must finish before A starts). The first two drive the successor’s start date; the other two drive its finish. Finish-to-start is the default and covers the large majority of real links; start-to-finish is the least used of the four by a long way.
What is the difference between lag and lead time?
They are the same field with opposite signs. A positive lag pushes the successor later — plaster drying, concrete curing, a supplier’s turnaround. A negative lag is a lead, letting the two tasks overlap. It is counted in working days on the resource’s own calendar, so weekends and holidays never count towards it, and on an hourly chart it is counted in working hours instead.
Should every task have a predecessor?
Very nearly. Apart from the genuine first task and the genuine last one, every task should have at least one predecessor and at least one successor. A task with neither is floating free — it never appears on the critical path, nothing warns you when it drifts, and it is usually one nobody has thought through.
What happens if I create a circular dependency?
You are stopped before it exists. Gantt Excel refuses the link that would close the loop and tells you why, and the predecessor picker leaves out any task that would create one — including the task itself and every summary task above it in the outline. A hand-built spreadsheet is less kind: a circular reference warning at best, and a silently wrong date at worst.
Is the template free?
There is a free version that plans full projects with tasks, dependencies and a timeline. Paid versions add resources, costs, baselines, the dashboard and the web report. No trial clock and no card to download the free one.

Reviews

What people actually say

4.9 out of 5 from customers who bought Gantt Excel · Read the reviews