Basic Question - "Cost Variance" always equals "Cost"

New Contributor

Apologies if this is a dumb question, but I'm fairly new to Project.  I've noticed whenever I have a task that takes less time to complete than is scheduled/specified (actual duration vs duration) it always changes the "% complete" fields and my cost variance is always listed as the same as my "cost".


For example, User John has a task scheduled for 3 hours that only ends up taking him 1.5 hours to complete.  At his rate of $190 per hour, the planned cost ("cost") for his task should be $570 but since it only took 1.5 hours the actual cost is $285.  So far so good, except that when I display the "Cost variance" field Project lists my CV as $570.  And worse, when I change the "actual duration" it automatically thinks the task is no longer at 100% completion.


So I kind of have two basic issues:

1.  I want to be able to mark tasks at 100% completion even if they take less time than originally planned.  And I want the actual time spent on that task to NOT get reset if I manually mark a task as 100% complete.

2.  I need to figure out how the cost variance works in the sense that all my attempts thus far have never shown anything other than "cost variance" always being the same as "cost".

6 Replies
best response confirmed by esmitheccit (New Contributor)

Hi @esmitheccit,

The variance is a calculation between a data (start, finish, work, cost, duration) and the baseline data. The baseline is a snapshot of your project so you can at any time measure the difference between what was planned and what is happening.

So basically you need to schedule your project, save a baseline. From that the variances will be equal to 0 before you do any update. As soon as you'll update any tasks, you'll see variance.


Now about progress tracking. The best practice is not to update the % complete. Because if you update the %complete to 100%, it will consider that the task took the planned work to be completed, which might not be the case. I advice that you update the actual work. Then if the actual work is less than the planned work but the task is complete, just set the remaning work to 0. It will automatically update the % complete to 100%.

Thanks so much, this seemed to do the trick.  For me the two keys were to set the baseline and to display the "remaining work" column and zero that out.  Once I did that it changed percent complete to 100% automatically, and my cost variance fields displayed properly as well.

@esmitheccit I think I spoke too soon.  This seemed to work fine when I had individual projects but once I created subprojects it stopped working.


Right now I have two subprojects part of a master project.  I have baselined the entire thing again and zeroed out all "actual duration" entries.


If I have a task that has a "Duration" of 1 hour but I enter in the "Actual Duration" as 0.5 hours and then set "Remaining Work" to zero, it then changes my "Duration" value back to 0.5 hours and it makes the "Duration Variance" positive 0.5 hours.


Perhaps there's a different column/metric I should be using to indicate how much work/time WAS spent on a task (vs what was originally scheduled)?



I apologize, clearly I'm still learning this.  if I set the "baseline duration" column to display, that one at least does NOT change even after I set "remaining work" to zero, which is good enough for my purposes I think.  And then the "Duration Variance" column seems to be based directly on what I enter in Baseline Duration.

@esmitheccit, I can see that you are well on your way to the typical new user experience of using MSP. Before you go round and round in circles, here's a few tips.

Don't assume that you know the meaning and definition of a field/column. You can check for precisely what it is by hovering the cursor over the column heading. The variance of something is simply the difference between the current something and the baseline something. If there is no baseline then there is no difference. Baseline values are set when you set a baseline. They can be edited manually as well (don't).

You need a rock solid approach to updating progress and re-scheduling as required. Start by practicing with (auto scheduled) tasks which have duration only, so no resource assignments, no work, no cost. You will need to set a status date. Display the status date as a vertical red line on the chart (format, gridlines). The status date will be earlier than a task start, or it goes through the middle, or it is after the task finish. A task has a scheduled/planned start and a scheduled/planned duration and a scheduled/planned finish. After some or all of the task has actually occurred (as at the status date/time), they all turn out to be different than what was scheduled/planned. Use the tracking table to input the actuals, and they will replace the as scheduled/planned. This will take some practice. Once you have that nailed down, then you can try the same thing with work and cost. Use the task usage and resource usage views.


Any help so far?


@esmitheccitThat's how it works. if you input the actual duration which is less than the scheduled duration, then MSP will truncate the task to that lesser duration, there is no remaining duration, and there is now an actual start and an actual finish which replace the scheduled start and scheduled finish. If you input an actual duration greater than scheduled duration, the task is extended, and so on.