How to Make a Gantt Chart in Excel
Excel has no built-in Gantt chart, but you can make one from a stacked bar chart: build a table of tasks with start dates and durations, chart it as a stacked bar, hide the start series, reverse the task order, then format the dates and colors. Here is the full method — plus a faster free alternative.
- Does Excel have a Gantt chart?
- Step 1: Build the task table
- Step 2: Insert a stacked bar chart
- Step 3: Make the Start series No Fill
- Step 4: Reverse the task order
- Step 5: Format dates & colors
- A worked example: six tasks, then a slip
- Adding dependencies & % complete
- Automatic Gantt via conditional formatting
- What Excel does and does not give you
- Free Excel template
- The faster alternative
- Frequently asked questions
Does Excel have a Gantt chart?
No — Excel has no native Gantt chart type. The Insert Chart menu offers columns, bars, lines and pies, but nothing labeled "Gantt." The universal workaround is to take a stacked bar chart and make the first segment invisible, so the visible segments float at their start dates and line up like Gantt bars. Microsoft ships a few "Gantt project planner" templates on the New workbook screen, but those use the same trick (or conditional formatting) underneath. The steps below build one from scratch.
Step 1: Build a table with task, start, end & duration
On a blank sheet, create four columns: Task, Start, End, and Duration. Enter your tasks and real dates in Start and End, formatted as dates. Then compute Duration in days with a simple formula — if Start is in B2 and End is in C2, put =C2-B2+1 in D2 and fill it down. Excel stores dates as serial numbers, so the subtraction returns a plain number of days. The +1 is there because a task that starts and ends on the same day still takes one day — without it every bar draws a day short and a one-day task vanishes. A small example, with each task starting the day after its predecessor ends:
| Task | Start | End | Duration |
|---|---|---|---|
| Research | Jul 1 | Jul 5 | 5 |
| Design | Jul 6 | Jul 12 | 7 |
| Build | Jul 13 | Jul 26 | 14 |
| Test | Jul 27 | Aug 2 | 7 |
| Launch | Aug 3 | Aug 4 | 2 |
If you would rather treat End as the handover moment, so the next task starts on the same date, use =C2-B2 instead. Either convention works; mixing them is what produces a chart quietly one day out on every row.
Step 2: Insert a stacked bar chart
Select the Task and Start columns, then hold Ctrl and add the Duration column (leave End out — the chart needs only Start and Duration). Go to Insert → Charts → Bar → 2-D Stacked Bar. Excel draws two series stacked in each row. It will not look like a Gantt chart yet; that is expected. If Excel picks up the wrong data, use Select Data to confirm Start is series one and Duration is series two.
Step 3: Make the Start series No Fill
This is the key move. Click once on any Start segment to select the whole Start series, right-click and choose Format Data Series, open the paint-bucket (Fill) options, and set Fill: No Fill. The Start segments vanish, leaving each Duration bar floating at its correct start date. Suddenly it reads like a Gantt chart. If you also see a border, set Border: No Line so no outline remains where the invisible segment used to be.
Step 4: Reverse the task order
Excel plots the first table row at the bottom of a bar chart, so your tasks appear upside down. Fix it by clicking the vertical axis (the list of task names), right-click, choose Format Axis, and under Axis Options tick Categories in reverse order. Your first task jumps to the top and the list now reads top-to-bottom in the same order as your table. You will usually also want to tick "Horizontal axis crosses: At maximum category" in the same panel so the date axis stays at the top.
Step 5: Format dates & colors
Two finishing touches. First, the date axis usually starts at zero, leaving a big empty gap: click the horizontal axis, open Format Axis, and set the Minimum bound to your project's start and the Maximum to its end. Excel wants these as serial numbers — type the date in an empty cell, format it as General, and read the number off. Set a major unit (7 for weekly gridlines) and a clean date format. Then recolor the Duration series and delete the legend. You now have a working Excel Gantt chart.
A worked example: six tasks, then a slip
The five steps above are mechanical. What decides whether the file survives a real project is what the formulas are, and what happens to them when the plan changes.
The sheet. A website replatform kicking off Monday 2 March 2026. Headers in row 1, tasks in rows 2–7. Columns: A Task, B Start, C End, D Working days, E Bar length. Holidays in H2:H4. Only column D is typed by hand; the rest is derived:
- C2, the End —
=WORKDAY(B2,D2-1,$H$2:$H$4). The-1matters:WORKDAYcounts forward, so a task starting Monday and taking 5 working days ends onWORKDAY(Mon,4), Friday. Omit it and every task runs a day long. - B3, the Start of each following task —
=WORKDAY(C2,1,$H$2:$H$4). This one formula is what makes the sheet reschedule at all. - E2, the number the chart plots —
=C2-B2+1. NotD2. D is working days; the chart's axis is a calendar including weekends, so a 10-working-day task must draw as a 12-day bar. Confusing the two is the commonest reason an Excel Gantt disagrees with its own table.
Fill C2 and E2 down rows 2–7 and B3 down rows 3–7:
| Row | A — Task | B — Start | C — End | D — Working days | E — Bar length |
|---|---|---|---|---|---|
| 2 | Discovery | Mon 2 Mar | Fri 13 Mar | 10 | 12 |
| 3 | Design | Mon 16 Mar | Fri 27 Mar | 10 | 12 |
| 4 | Build | Mon 30 Mar | Fri 24 Apr | 20 | 26 |
| 5 | Content migration | Mon 27 Apr | Fri 15 May | 15 | 19 |
| 6 | QA | Mon 18 May | Fri 29 May | 10 | 12 |
| 7 | Go live | Mon 1 Jun | Mon 1 Jun | 1 | 1 |
The axis. Excel wants serial numbers, not dates, for axis bounds. Type =B2 into a spare cell and format it General to read one off: 2 March 2026 is 46083, 1 June 2026 is 46174. Those go in Minimum and Maximum, with Major unit 7 for weekly gridlines.
Now change something. Design overruns by three days. Edit one cell — D3 from 10 to 13 — and the chain re-computes: Design ends Wed 1 Apr, Build runs Thu 2 Apr to Wed 29 Apr, Content migration Thu 30 Apr to Wed 20 May, QA Thu 21 May to Wed 3 Jun, go-live Thu 4 Jun. Three days in, three days out. That is the sheet at its best, and it is genuinely useful.
And here is what breaks.
- The last bar runs off the chart. Go-live moved to 4 Jun, past the 46174 hardcoded as the axis Maximum. The bar is clipped, and nothing warns you. Every date change means re-reading a serial and re-typing a bound.
- An inserted row half-joins the plan. Add "Client review" between Design and Build: Excel extends the chart's data range, but the new row arrives with no formulas, and the old Build row still points at Design. Miss that and the plan reads correctly while scheduling wrongly. Append below row 7 instead and it falls outside the range and never appears at all.
- A second predecessor has nowhere to live. If QA needs both Build and Content migration, the honest formula is
=WORKDAY(MAX(C4,C5),1,$H$2:$H$4). It works — but nothing on the chart shows the link, and the next editor sees only a date. Add a five-day client review as lag and it becomes=WORKDAY(C3,1+5,$H$2:$H$4): a bare5inside a formula, labelled nowhere.
Column B as a formula buys you rescheduling down a single chain. It does not buy you a network. Nothing here can tell you which pair of tasks drives the finish date, because nothing here knows they are linked.
Adding dependencies & % complete
This is where the limits show. Dependencies are not supported natively: there are no finish-to-start arrows, and Excel has no idea one task constrains another. The workaround, as above, is a formula in Start pointing at the predecessor's End, which handles a single chain. It cannot express start-to-start or finish-to-finish links at all, needs a hidden MAX() for two predecessors, and breaks silently when someone sorts the rows — sorting moves values but leaves relative references pointing at whatever now sits above.
Percent complete needs helper columns, and the instruction usually given for it is wrong. Adding a Progress series on top of Start and Duration makes each bar longer by the work already done — a task at 100% draws at twice its true length. The correct build uses three series and drops the plain bar-length one. With % Complete in column F, add Done as =E2*F2 and Remaining as =E2*(1-F2).
Chart Start, Done and Remaining in that order: Start on No Fill, Done dark, Remaining light. The two visible segments always sum to E, so each bar keeps its true calendar footprint and fills from the left as work progresses. Every added task then means re-checking the data range and the series order, which Excel will cheerfully rearrange when that range changes.
Automatic Gantt via conditional formatting
If you would rather avoid charts entirely, build a conditional-formatting Gantt in the cells. It is sturdier, because there is no chart object with a data range to fall out of date.
Keep the same table in A–E. Put a calendar across row 1 from column G: =B2 in G1, =G1+1 in H1, dragged right for the length of the project — 2 March to 1 June inclusive is 92 days, so out to column CT. Format the row as ddd and narrow the columns to about 20 pixels.
Select G2:CT7 with G2 as the active cell — that matters, because the formula is written from the active cell's point of view and offset for every other. Under Home → Conditional Formatting → New Rule → Use a formula, add three rules in this order:
=AND(G$1>=$B2, G$1<=$C2)— your bar colour. The mixed references are the whole trick:G$1locks the row so each column reads its own date,$B2locks the column so each row reads its own task's dates.=WEEKDAY(G$1,2)>5— light grey. Return type2numbers Monday as 1 through Sunday as 7, so>5is exactly Saturday and Sunday. The default type1starts on Sunday and would shade the wrong two days.=G$1=TODAY()— a coloured left border, giving you a today line.
Rules evaluate top down and the first fill wins, so the bar rule must sit above the weekend rule or every bar grows grey stripes on Saturdays. This updates the moment a date changes, prints cleanly, and tolerates inserted rows better than the chart — but milestones and progress still need manual rules, and it still knows nothing about dependencies.
What Excel does and does not give you
Both methods draw a perfectly respectable picture of a schedule. Neither of them schedules anything. That distinction is easy to lose once the bars look right, so here it is plainly:
| Capability | Stacked-bar chart | Conditional formatting | A real scheduler |
|---|---|---|---|
| Weekends and holidays excluded | Yes, via WORKDAY | Yes, via WORKDAY | Yes, built in |
| Single FS chain reschedules | Yes, if Start is a formula | Yes, if Start is a formula | Yes |
| Visible dependency arrows | No | No | Yes |
| Two predecessors on one task | Only as a hidden MAX() | Only as a hidden MAX() | Yes |
| SS, FF and SF link types | No | No | Yes |
| Lag on a link, labelled | No — a bare +5 in a formula | No — a bare +5 in a formula | Yes |
| Critical path | No | No | Calculated |
| Float / slack per task | No | No | Calculated |
| Resource levelling | No | No | Yes |
| Over-allocation warning | No | No | Yes |
| Baseline & variance | Copy the columns by hand | Copy the columns by hand | Saved and compared |
| Survives inserting a row | Formulas must be retyped | Mostly | Yes |
| Survives sorting the rows | No — references follow position | No | Yes |
| Milestones as diamonds | Manual marker series | Manual rule | Yes |
That is a specific claim, not a dismissal: a stacked-bar chart is a drawing of a schedule you worked out somewhere else. For a dozen tasks running roughly in a line that is sufficient, and the spreadsheet is the right tool. But the middle rows of that table are exactly what you get asked in a status meeting, and the file cannot answer any of it.
Free Excel template
If you just want a working file, start from our ready-made free Excel Gantt chart template. It already has the task table, the stacked-bar setup, reversed axis, and formatted dates in place — you drop in your tasks and dates and the chart updates. You can also browse the full template library for industry-specific plans like construction, marketing, and software.
The faster alternative — build online & export to Excel
The stacked-bar method works, but it is slow to set up and painful to change. If you want the Excel file without the busywork, build the chart in gantts.app first — free, no sign up, no download. You type tasks, drag bars and link dependencies, and it calculates the critical path automatically. Then export to Excel in one click (or PowerPoint, PDF, PNG). New to the format? Start with how to make a Gantt chart step by step.
Frequently asked questions
Does Excel have a built-in Gantt chart?
No. Excel has no native Gantt chart type. The standard method is to start from a stacked bar chart and hide the first series so the remaining bars line up like a Gantt chart. Excel also ships some Gantt project templates you can download.
How do I turn a stacked bar chart into a Gantt chart in Excel?
Chart the Start and Duration columns as a stacked bar, then select the Start series and set its fill to No Fill. The invisible Start segments push each Duration bar to its correct start date, producing a Gantt chart. Reverse the axis so task one sits at the top.
How do I add percent complete to an Excel Gantt chart?
Use three stacked series, not four. Add a Percent complete column, then two helpers: Done, equal to bar length × percent complete, and Remaining, equal to bar length × (1 − percent complete). Chart Start, Done and Remaining in that order and drop the plain duration series. Adding a progress series on top of duration is a common mistake — it makes every bar longer than the task really is.
Does an Excel Gantt chart update when a task slips?
Only if each task's Start is a formula pointing at the previous task's End, such as =WORKDAY(C2,1). Then a change ripples down a single chain. It will not handle a task with two predecessors, it cannot show start-to-start or finish-to-finish links, and the chart's axis bounds are fixed serial numbers — so a date that moves past the end of the project runs off the chart with no warning.
Why is my Excel Gantt chart in the wrong order?
By default Excel plots the first table row at the bottom of a bar chart. Select the vertical axis, open Format Axis, and tick Categories in reverse order so your tasks read top to bottom in the same order as your table.
Is there a faster alternative to building a Gantt chart in Excel?
Yes. gantts.app builds the chart for you free in your browser with no sign up, including dependencies and automatic critical path, and then exports to Excel, PowerPoint, PDF or PNG — so you get an Excel file without the manual stacked-bar setup.