• Guides |
  • How to make a Gantt chart in Excel

How to make a Gantt chart in Excel

Excel has no Gantt chart type. What it has is a stacked bar chart that can be tricked into looking like one, by charting an invisible bar first to push the visible bar into position. That is the standard method and it takes about twenty minutes the first time, most of which goes on one step that is not in any of the older tutorials.

These steps are written for Excel for the web, the free version that runs in a browser at excel.cloud.microsoft with any Microsoft account. No install, no licence. It is also what you land in if you open a spreadsheet from OneDrive or a link somebody sent you, which is increasingly how people meet Excel at all. The web app builds this chart differently from the desktop one in three specific places, and every one of them is a place people give up. Those differences are called out as they come.

A Gantt chart built in Excel from a stacked bar chart with the first series hidden

Method 1: the stacked bar chart

This is the one most Excel Gantt tutorials describe, and it produces a real chart object you can copy into a deck or a document. The logic is worth understanding before you start clicking, because it makes the steps obvious rather than magical: a bar chart bar always begins at zero, so to make a bar that floats in the middle of a timeline you draw two bars end to end and make the first one invisible.

Set up the data

Three columns is all you need, and the third one matters more than it looks.

  1. Column A - Task. One row per task, in the order you want them read.
  2. Column B - Start date. Real dates, formatted as dates.
  3. Column C - Duration. A number of days, not an end date.

If what you have is a list of end dates, add a helper column with =C2-B2 and use that as your duration. This is the first place builds go wrong. Excel will happily plot an end date as though it were a length, and since a date is stored as a number somewhere north of 46,000, every bar comes out roughly the same absurd length and the real durations vanish into rounding.

Sort the rows by start date before you go any further. It is not strictly required, but an out of order list produces a chart that is much harder to read and much harder to debug.

Excel for the web with the task, start date and duration columns filled in

Insert the chart

  1. Select all three columns including the headers.
  2. Go to Insert and find the row of chart icons. The horizontal bar icon inserts a chart immediately, but it gives you a clustered bar. The sub-types live behind the chevron at the end of that group. Open it, and under Bar pick the middle option, Stacked Bar.

What appears will not look like progress. Every bar starts at the left edge, and the task names are printed sideways next to a column of dates. That is the first web-specific difference, and it is worth understanding rather than fighting.

The Excel chart type gallery open with Stacked Bar under the Bar heading

Make the dates a series, which the web app will not do for you

Desktop Excel looks at three columns and guesses that the first holds labels and the other two are series. Excel for the web guesses differently. It files both the task names and the start dates as axis labels and charts only the duration, so you get ten short bars all starting at zero. That is not a Gantt chart, and no amount of formatting will make it one.

  1. With the chart selected, click Select Data on the Chart tab. A panel opens on the right with Data and Format tabs.
  2. Under Vertical Axis Labels there are two entries, one for the task names and one for the dates. Delete the dates one with its bin icon. The task names take over the axis and the chart immediately becomes readable.
  3. Under Bar Values, open Add Field and choose Add New Field.
  4. A new series appears with a Values box. Set it to your start date column, for example =Sheet1!B2:B11, and confirm with the tick.
  5. It lands below Duration, which is the wrong way round, because the offset has to be drawn first. Use the up arrow on its row to move it above Duration.

Now the bars sit in the right places, stacked in the right order, and the horizontal axis has switched itself to real dates. Two more steps and it is a Gantt chart.

The Excel Chart panel showing task names as vertical axis labels and two bar value series

Hide the offset and turn the tasks the right way up

  1. Click any bar of the offset series in the chart, then open the Format tab in the same panel.
  2. Open Fill and choose No Fill, which sits right at the bottom of the colour picker below the standard colours. The offset bars disappear and the duration bars are left floating where they belong.
  3. Still in Format, expand Vertical Axis and tick Categories in reverse order. Your first task moves to the top, where a reader expects it.

Reversing the categories also moves the date labels from the bottom of the chart to the top. That is not a fault, and for a Gantt chart it usually reads better, but it does flip the whole thing while you are looking at something else.

The Excel series fill picker open with No Fill at the bottom of the colour list

The step that stops most people: the axis bounds

The chart works now, but the timeline runs from a couple of weeks before your first task to a couple of weeks after your last, so everything is squeezed into the middle. Tightening it is one setting, and it is where the web app is least helpful.

Expand Horizontal Axis in the Format panel and look at Bounds. Minimum and Maximum are shown as five-digit numbers like 46240. Excel stores a date as the number of days since the start of 1900, so 1 September 2026 is 46266 - and the web app wants that number. It will not accept a typed date.

To get the serial for any date, put the date in a spare cell and change that cell's format to General. The number that appears is what the Bounds box is asking for. Set Minimum to your earliest start and Maximum to your latest end, and the chart snaps to exactly your project's window.

The rest is tidying. Turn the legend off with the toggle near the top of the Format panel, and set Gap Width under Vertical Axis to around 30 to 40 percent if you want thicker bars.

The finished Gantt chart in Excel for the web beside the task table

If you have the desktop app, the same build is shorter: it usually reads the two series correctly on its own, the fill control is a right click away on the series itself, and recent versions will accept a typed date in the Bounds box. The shape of the method is identical, so everything above still applies - there is simply less to undo first.

Method 2: conditional formatting on a date grid

No chart object at all. You build a calendar across the top of the sheet and colour the cells that fall inside each task. It is less polished and considerably easier to live with, and if you are going to keep the plan updated rather than produce it once, this is the method to use.

  1. Task names down column A, start dates in column B, end dates in column C.
  2. From column D onward, one date per column across row 1. Daily for a short project, weekly for anything over a couple of months.
  3. Select the grid from D2 to the bottom right of your task rows.
  4. Go to Home > Conditional Formatting > New Rule, and choose Use a formula to determine which cells to format.
  5. Enter =AND(D$1>=$B2,D$1<=$C2) and pick a fill colour under Format.

The anchoring is the whole trick. The dollar sign before the 1 locks the date row so every cell compares against its own column's date. The dollar signs before B and C lock the date columns so every cell compares against its own row's task. Get one of those wrong and you get a solid block of colour or nothing at all.

One locale note that costs people ten minutes: if your Excel uses semicolons as argument separators rather than commas, that formula needs to read =AND(D$1>=$B2;D$1<=$C2). Excel will simply refuse the rule without explaining why.

The payoff is that changing a date changes the picture immediately, with no chart to rebuild and no series to re-hide. You can add a second rule in a different colour for completed work, or one that highlights today's column, and it stays readable.

Method 3: start from a template instead

Worth knowing before you build anything, because it is the honest answer to why most people go looking for a tutorial at all. The Excel for the web start screen has a template gallery with a Search templates box. Search gantt and several usable project planners come back, including a simple project schedule and a fuller planner with a coloured timeline grid.

These are built on the conditional formatting approach rather than a chart object, with the bars driven by a handful of columns. If what you need is a Gantt chart by the end of the afternoon and you do not much care how it was assembled, this is faster than either method above. The desktop app has a similar one, usually called Gantt project planner.

The reasons to build it yourself anyway: you want the chart object specifically, because it copies cleanly into a slide or a report; you need the layout to match an existing document; or the template's assumptions about progress tracking do not match how you actually work.

Which method should you pick?

Pick the stacked bar chart if the output matters more than the maintenance, and conditional formatting if it is the other way round.

Area Stacked bar chart Conditional formatting
Setup time 15 to 20 minutes 5 to 10 minutes
Output A chart object you can copy out Coloured cells in the sheet
Updating dates Works, but the axis bounds need resetting when the range grows Instant, nothing to rebuild
Adding tasks later The chart data range has to be extended each time Add a row inside the formatted range
Pasting into a deck or report Clean, it is a real chart Screenshot only
Showing progress Needs a third series A second rule in another colour

If the question behind all of this is whether a spreadsheet is the right home for a project plan at all, that is covered separately in the comparison of spreadsheets against purpose-built Gantt tools.

What Excel will not do, no matter which method you pick

Dependencies. That is the honest answer and it is not a small one.

In every method above, each date is a value somebody typed. Nothing in the sheet knows that testing follows build. So when build slips by three days, nothing moves, and you reopen the file and edit every downstream date by hand. The day you miss one, the plan is quietly wrong, and it stays quietly wrong until somebody notices a date that cannot possibly be right.

On a stable plan that costs nothing, which is exactly why spreadsheets remain a reasonable choice for a great many projects. On a plan that moves weekly it is a recurring tax, and the failure mode is not the effort. It is that the file slowly stops matching reality until nobody trusts it. That is how most spreadsheet plans actually end: not abandoned, just no longer believed.

Three more things worth knowing before you commit:

  • No critical path. Without links between tasks there is no chain to trace, so you cannot tell which tasks are actually setting your end date and which have slack.
  • No baseline. Comparing where a task was planned to be against where it is means keeping a second copy of the dates and diffing them yourself.
  • Shared editing drifts. A file where anyone can retype a date and nothing recalculates tends to accumulate small contradictions, and they are hard to spot.

A reasonable rule of thumb: if you have rebuilt the same sheet twice because the dates got tangled, the spreadsheet has finished being the cheap option.

When is it worth moving off the spreadsheet?

Move when two things are true together: tasks genuinely depend on each other, and the plan changes often enough that you are maintaining dates by hand. Neither one on its own is a good reason, and neither is about how many tasks you have. A stable forty task plan is fine in Excel. A twelve task plan that moves every week is not.

The switch does not have to mean project management software, which is the assumption that keeps people in spreadsheets longer than they want to be. A dedicated Gantt tool is a much smaller step than a full project platform. Ganttile is free and runs in the browser, and linking tasks so later dates shift on their own takes about as long as the axis fix above. If the project also needs boards, comments, files and reporting around the timeline, that is the point where something broader like Breeze makes more sense than a chart on its own.

If you are weighing the same choice in a browser rather than in Office, the two methods work slightly differently in Google Sheets and one of the fiddly Excel steps disappears entirely.

Common questions about Gantt charts in Excel

Why do all my bars start at the left edge?
Because Excel for the web filed your start dates as axis labels instead of charting them, so the only series it drew was the duration. Open Select Data, delete the date entry under Vertical Axis Labels, then add the date column as a new field under Bar Values and move it above Duration with the up arrow.
Why will the axis Bounds box not accept a date?
Excel for the web expects the serial number rather than the date, so 1 September 2026 has to be entered as 46266. Put the date in a spare cell and change that cell's format to General to read the number off, then type that into Minimum or Maximum.
Can I show percent complete on the bars?
With conditional formatting, yes: add a completion column and a second rule that colours the finished portion differently. With the stacked bar method it means adding a third series and splitting each duration in two, which is usually where these builds stop being worth the time.
Will my chart survive being opened in Google Sheets?
The stacked bar chart usually converts, since Sheets builds them the same way, though you may need to re-hide the first series. Conditional formatting rules mostly carry over as well, but check the custom formula afterwards because the anchoring sometimes shifts.

Where to start

If you need a chart to show someone once, use the stacked bar method and copy it out, and remember the axis bounds before you conclude it is broken. If you are going to keep the plan alive, use conditional formatting or the built-in template, and accept that you will be updating downstream dates by hand every time something slips.

Try conditional formatting first. It takes five minutes and it tells you quickly whether a spreadsheet is enough for your project. If you find yourself retyping the same downstream dates every week, that is the signal to try a chart where the dependencies do it for you.