Adjusted Variance and VBA

N

nickc

I am trying (and I mean trying) to create a subroutine for calculating an
"Adjusted Variance" field. I certainly have a ways to go with VBA, as I
thought I got everything be-bugged and working last night - only to be more
disappointed looking at the results in the immediate window. I am
responsible for monitoring various KPI's (key performance indicators) for our
service providers (SP's). One of these is % time to completion. The
challenge with the % time to completion thing is cases where the SP has a
dependency (from) which is out of their control. So if the dependency is
late, so is the service provider on their tasks. I need to account for this
and give them "credit" for the portion of + variance which was not their
responsibility. So I got this great idea (so I thought) to create an
"Adjusted Finish Variance" variable (array). I was trying to get the program
to cycle through each task, look up an identifier for the SP when it found
this, then look to see if the from dependency was that of another resource,
and if so subtract the finish variance of that resource from the SP's finish
variance. For example, if our SP has 4 days positive finish variance, and
the from dependency was not them, but another resource, and that resource was
late 2 days, then the adjusted finish variance for our SP would be 4 - 2 =
+2. One challenge I am having is understanding the relations between tasks,
resources, and assignments when it comes to VBA. I tried utilizing the
resource group field, however the program does not seem to be picking it up
from each task. In fact, it is ignoring the tasks with resource group "KPI".
I know there's probably an easier way than this VBA, however I would like to
learn it for other purposes such as entering time phased data via forms.
Here is my attempt at VBA, would appreciate any feedback.

Sub adjusted_variance()
Dim tsk As Task
Dim adj_var() As Integer
Dim z As Integer
Dim dep As TaskDependency
z = 0
For Each tsk In ActiveProject.Tasks
If tsk.ResourceGroup = "KPI" And tsk.Predecessors <> "NA" Then
For Each dep In tsk.TaskDependencies
MsgBox (tsk.Name) & (tsk.Predecessors)
If dep.From.ResourceGroup = support Then
z = z + 1
ReDim adj_var(z)
adj_var(z) = tsk.FinishVariance - dep.From.FinishVariance
Debug.Print adj_var(z)
Debug.Print (tsk.Name) & (tsk.Predecessors)
End If
Next dep
End If
Next tsk
End Sub
 
J

Jim Aksel

I might be missing the whole point here but I'd go at it an entirely
different way.
If you want %time to completion, I think you want one of two things.

1. % of the duration of the task that is behind you (from the given start
date, not the baseline date.

OR

2. The % duratrion remaining on the task. That's just 100- the answer to
the above.

So do this. Set a status date (project/project information...)
Now turn on the tracking toolbar (View/Toolbars/Tracking).
Select your tasks and status them as "As Scheduled"

That gives you the answer to (1). If you want, create a custom field as
100-[Percent Complete]

Is that what you need?
--
If this post was helpful, please consider rating it.

Jim Aksel, MVP

Check out my blog for more information:
http://www.msprojectblog.com
 
N

nickc

Sorry, I was not very clear on that. Not so much % completion as in
duration/ time remaining, but % on time completion for each task and tasks to
date. I need to show how many tasks were completed based on the agreed
finish date. Something like % slippage. However, I will certainly use this
(duration), as it will be very useful to report on.

Thanks,

Nick

Jim Aksel said:
I might be missing the whole point here but I'd go at it an entirely
different way.
If you want %time to completion, I think you want one of two things.

1. % of the duration of the task that is behind you (from the given start
date, not the baseline date.

OR

2. The % duratrion remaining on the task. That's just 100- the answer to
the above.

So do this. Set a status date (project/project information...)
Now turn on the tracking toolbar (View/Toolbars/Tracking).
Select your tasks and status them as "As Scheduled"

That gives you the answer to (1). If you want, create a custom field as
100-[Percent Complete]

Is that what you need?
--
If this post was helpful, please consider rating it.

Jim Aksel, MVP

Check out my blog for more information:
http://www.msprojectblog.com



nickc said:
I am trying (and I mean trying) to create a subroutine for calculating an
"Adjusted Variance" field. I certainly have a ways to go with VBA, as I
thought I got everything be-bugged and working last night - only to be more
disappointed looking at the results in the immediate window. I am
responsible for monitoring various KPI's (key performance indicators) for our
service providers (SP's). One of these is % time to completion. The
challenge with the % time to completion thing is cases where the SP has a
dependency (from) which is out of their control. So if the dependency is
late, so is the service provider on their tasks. I need to account for this
and give them "credit" for the portion of + variance which was not their
responsibility. So I got this great idea (so I thought) to create an
"Adjusted Finish Variance" variable (array). I was trying to get the program
to cycle through each task, look up an identifier for the SP when it found
this, then look to see if the from dependency was that of another resource,
and if so subtract the finish variance of that resource from the SP's finish
variance. For example, if our SP has 4 days positive finish variance, and
the from dependency was not them, but another resource, and that resource was
late 2 days, then the adjusted finish variance for our SP would be 4 - 2 =
+2. One challenge I am having is understanding the relations between tasks,
resources, and assignments when it comes to VBA. I tried utilizing the
resource group field, however the program does not seem to be picking it up
from each task. In fact, it is ignoring the tasks with resource group "KPI".
I know there's probably an easier way than this VBA, however I would like to
learn it for other purposes such as entering time phased data via forms.
Here is my attempt at VBA, would appreciate any feedback.

Sub adjusted_variance()
Dim tsk As Task
Dim adj_var() As Integer
Dim z As Integer
Dim dep As TaskDependency
z = 0
For Each tsk In ActiveProject.Tasks
If tsk.ResourceGroup = "KPI" And tsk.Predecessors <> "NA" Then
For Each dep In tsk.TaskDependencies
MsgBox (tsk.Name) & (tsk.Predecessors)
If dep.From.ResourceGroup = support Then
z = z + 1
ReDim adj_var(z)
adj_var(z) = tsk.FinishVariance - dep.From.FinishVariance
Debug.Print adj_var(z)
Debug.Print (tsk.Name) & (tsk.Predecessors)
End If
Next dep
End If
Next tsk
End Sub
 
J

Jim Aksel [MVP]

So you essentially want a Baseline Execution Index? The % of tasks that
finished on (or before) their baseline date compared to to total scheduled
to be completed?

I see what ou are saying, that if Task B starts late because predecessor A
finished late, you don't want to penalize task B for that? BLEI does not
respect that level of forgiveness... it only cares about finishes and would
therefore penalize both A and B. (At least in my world of goverbnment
contracting).

If you are looking at a "modified" you might want to explore Duration
Variance and Finish Variance. A task with 0 (or less) duration variance that
is actually complete is a good task since the task performed no worse than
as agreed... even if he started late or finished late. Is that the idea?

So you might want to test completed tasks where "Duration Variance No
Greater than 0" and "Finish Variance No Greater Than 0"
Run yourself up some counters ... (1) total tasks with Baseline Finish
within your period of interest which becomes your denominator), (2) tasks
within that group with 0 or less Finish Variance, (3) tasks from within
that group where there is positive finish variance. Remember that
unfinished tasks may corrupt the counts. Now you will also need another
counter where Finish Variance is positive and Duration Variance is no
greater than 0 (the forgiven tasks)

Something else to consider for a BLEI. What about a task whtat has a
baseline finish to the right of your period of interest, but they finshed
early (prior to the status date)? Do they count to help boost the
percentage?

I have some VB.NET code that calculates a BLEI and could be modified to meet
these requirements. However, this is the type of thing I do for a living so
that would not be free ware or postable.

Is that getting you closer? Or did I head off on the wrong path again?
Happy to provide more help if I can.

Jim Aksel


nickc said:
Sorry, I was not very clear on that. Not so much % completion as in
duration/ time remaining, but % on time completion for each task and tasks
to
date. I need to show how many tasks were completed based on the agreed
finish date. Something like % slippage. However, I will certainly use
this
(duration), as it will be very useful to report on.

Thanks,

Nick

Jim Aksel said:
I might be missing the whole point here but I'd go at it an entirely
different way.
If you want %time to completion, I think you want one of two things.

1. % of the duration of the task that is behind you (from the given start
date, not the baseline date.

OR

2. The % duratrion remaining on the task. That's just 100- the answer
to
the above.

So do this. Set a status date (project/project information...)
Now turn on the tracking toolbar (View/Toolbars/Tracking).
Select your tasks and status them as "As Scheduled"

That gives you the answer to (1). If you want, create a custom field as
100-[Percent Complete]

Is that what you need?
--
If this post was helpful, please consider rating it.

Jim Aksel, MVP

Check out my blog for more information:
http://www.msprojectblog.com



nickc said:
I am trying (and I mean trying) to create a subroutine for calculating
an
"Adjusted Variance" field. I certainly have a ways to go with VBA, as
I
thought I got everything be-bugged and working last night - only to be
more
disappointed looking at the results in the immediate window. I am
responsible for monitoring various KPI's (key performance indicators)
for our
service providers (SP's). One of these is % time to completion. The
challenge with the % time to completion thing is cases where the SP has
a
dependency (from) which is out of their control. So if the dependency
is
late, so is the service provider on their tasks. I need to account
for this
and give them "credit" for the portion of + variance which was not
their
responsibility. So I got this great idea (so I thought) to create an
"Adjusted Finish Variance" variable (array). I was trying to get the
program
to cycle through each task, look up an identifier for the SP when it
found
this, then look to see if the from dependency was that of another
resource,
and if so subtract the finish variance of that resource from the SP's
finish
variance. For example, if our SP has 4 days positive finish variance,
and
the from dependency was not them, but another resource, and that
resource was
late 2 days, then the adjusted finish variance for our SP would be 4 -
2 =
+2. One challenge I am having is understanding the relations between
tasks,
resources, and assignments when it comes to VBA. I tried utilizing
the
resource group field, however the program does not seem to be picking
it up
from each task. In fact, it is ignoring the tasks with resource group
"KPI".
I know there's probably an easier way than this VBA, however I would
like to
learn it for other purposes such as entering time phased data via
forms.
Here is my attempt at VBA, would appreciate any feedback.

Sub adjusted_variance()
Dim tsk As Task
Dim adj_var() As Integer
Dim z As Integer
Dim dep As TaskDependency
z = 0
For Each tsk In ActiveProject.Tasks
If tsk.ResourceGroup = "KPI" And tsk.Predecessors <> "NA" Then
For Each dep In tsk.TaskDependencies
MsgBox (tsk.Name) & (tsk.Predecessors)
If dep.From.ResourceGroup = support Then
z = z + 1
ReDim adj_var(z)
adj_var(z) = tsk.FinishVariance - dep.From.FinishVariance
Debug.Print adj_var(z)
Debug.Print (tsk.Name) & (tsk.Predecessors)
End If
Next dep
End If
Next tsk
End Sub
 
N

nickc

Jim:

I really appreciate you taking the time to think this over. I am not sure
about duration variance, since as long as our Service Provider gets the job
done on time, that particular performance metric will be fine. So if he
starts late, but still finishes on time, I think I'll be fine. However, I
could easily be overlooking something. I could probably have a simple Boolean
or integer type field for now, saying if finish variance < = 0 then … 1 else
0. Add all the 1's up and out of the total count, there's my % on time
complete. Which brings me to your point regarding finishing ahead of
time……(thinking)…..This would be a (-) variance, which if I treated the 1's
as late, could offset those 1's. I don’t think I want to go above 100%. I
still need to identify and subtract those variances from others causing this
SP who is being performance graded to get be late. That’s what got me going
in the VBA direction. Regarding the VB.Net code - I understand, nothing's
free.


Thanks Again - appreciate any further input.


Jim Aksel said:
So you essentially want a Baseline Execution Index? The % of tasks that
finished on (or before) their baseline date compared to to total scheduled
to be completed?

I see what ou are saying, that if Task B starts late because predecessor A
finished late, you don't want to penalize task B for that? BLEI does not
respect that level of forgiveness... it only cares about finishes and would
therefore penalize both A and B. (At least in my world of goverbnment
contracting).

If you are looking at a "modified" you might want to explore Duration
Variance and Finish Variance. A task with 0 (or less) duration variance that
is actually complete is a good task since the task performed no worse than
as agreed... even if he started late or finished late. Is that the idea?

So you might want to test completed tasks where "Duration Variance No
Greater than 0" and "Finish Variance No Greater Than 0"
Run yourself up some counters ... (1) total tasks with Baseline Finish
within your period of interest which becomes your denominator), (2) tasks
within that group with 0 or less Finish Variance, (3) tasks from within
that group where there is positive finish variance. Remember that
unfinished tasks may corrupt the counts. Now you will also need another
counter where Finish Variance is positive and Duration Variance is no
greater than 0 (the forgiven tasks)

Something else to consider for a BLEI. What about a task whtat has a
baseline finish to the right of your period of interest, but they finshed
early (prior to the status date)? Do they count to help boost the
percentage?

I have some VB.NET code that calculates a BLEI and could be modified to meet
these requirements. However, this is the type of thing I do for a living so
that would not be free ware or postable.

Is that getting you closer? Or did I head off on the wrong path again?
Happy to provide more help if I can.

Jim Aksel


nickc said:
Sorry, I was not very clear on that. Not so much % completion as in
duration/ time remaining, but % on time completion for each task and tasks
to
date. I need to show how many tasks were completed based on the agreed
finish date. Something like % slippage. However, I will certainly use
this
(duration), as it will be very useful to report on.

Thanks,

Nick

Jim Aksel said:
I might be missing the whole point here but I'd go at it an entirely
different way.
If you want %time to completion, I think you want one of two things.

1. % of the duration of the task that is behind you (from the given start
date, not the baseline date.

OR

2. The % duratrion remaining on the task. That's just 100- the answer
to
the above.

So do this. Set a status date (project/project information...)
Now turn on the tracking toolbar (View/Toolbars/Tracking).
Select your tasks and status them as "As Scheduled"

That gives you the answer to (1). If you want, create a custom field as
100-[Percent Complete]

Is that what you need?
--
If this post was helpful, please consider rating it.

Jim Aksel, MVP

Check out my blog for more information:
http://www.msprojectblog.com



:

I am trying (and I mean trying) to create a subroutine for calculating
an
"Adjusted Variance" field. I certainly have a ways to go with VBA, as
I
thought I got everything be-bugged and working last night - only to be
more
disappointed looking at the results in the immediate window. I am
responsible for monitoring various KPI's (key performance indicators)
for our
service providers (SP's). One of these is % time to completion. The
challenge with the % time to completion thing is cases where the SP has
a
dependency (from) which is out of their control. So if the dependency
is
late, so is the service provider on their tasks. I need to account
for this
and give them "credit" for the portion of + variance which was not
their
responsibility. So I got this great idea (so I thought) to create an
"Adjusted Finish Variance" variable (array). I was trying to get the
program
to cycle through each task, look up an identifier for the SP when it
found
this, then look to see if the from dependency was that of another
resource,
and if so subtract the finish variance of that resource from the SP's
finish
variance. For example, if our SP has 4 days positive finish variance,
and
the from dependency was not them, but another resource, and that
resource was
late 2 days, then the adjusted finish variance for our SP would be 4 -
2 =
+2. One challenge I am having is understanding the relations between
tasks,
resources, and assignments when it comes to VBA. I tried utilizing
the
resource group field, however the program does not seem to be picking
it up
from each task. In fact, it is ignoring the tasks with resource group
"KPI".
I know there's probably an easier way than this VBA, however I would
like to
learn it for other purposes such as entering time phased data via
forms.
Here is my attempt at VBA, would appreciate any feedback.

Sub adjusted_variance()
Dim tsk As Task
Dim adj_var() As Integer
Dim z As Integer
Dim dep As TaskDependency
z = 0
For Each tsk In ActiveProject.Tasks
If tsk.ResourceGroup = "KPI" And tsk.Predecessors <> "NA" Then
For Each dep In tsk.TaskDependencies
MsgBox (tsk.Name) & (tsk.Predecessors)
If dep.From.ResourceGroup = support Then
z = z + 1
ReDim adj_var(z)
adj_var(z) = tsk.FinishVariance - dep.From.FinishVariance
Debug.Print adj_var(z)
Debug.Print (tsk.Name) & (tsk.Predecessors)
End If
Next dep
End If
Next tsk
End Sub
 
J

Jim Aksel

In MS Project, Finsh Variance that are negative mean early finishes compared
to baasline. Negative duration variance is also less than baseline.

Looks like we've come full circle. The real question is do we want to
penalize a guy for a late finish if he was forced to a late start. In the
government contracts I've worked, the poor guy gets stuck. In some of my
commercial endeavors they try to be a bit more understanding. The thinking
is that if the project falls behind, it becomes every task owner's job to try
to get back on schedule.

So I see the following that you have to have rules for. Assuming a baseline
finish prior to the start date:

1. Did it finish on time? If yes, we care nothing else.
2. If it did not finish on time, will this be forgiven?
3. How does Project determine if forgiveness will be granted? Example, I
was forced to a late start by 2 days, I finished late only 1 day. I just got
the PM back a day on his schedule. Am I a hero or a bum becuase I did not
finish on baseline?

I guess they pay me to think way too hard. :)
--
If this post was helpful, please consider rating it.

Jim Aksel, MVP

Check out my blog for more information:
http://www.msprojectblog.com



nickc said:
Jim:

I really appreciate you taking the time to think this over. I am not sure
about duration variance, since as long as our Service Provider gets the job
done on time, that particular performance metric will be fine. So if he
starts late, but still finishes on time, I think I'll be fine. However, I
could easily be overlooking something. I could probably have a simple Boolean
or integer type field for now, saying if finish variance < = 0 then … 1 else
0. Add all the 1's up and out of the total count, there's my % on time
complete. Which brings me to your point regarding finishing ahead of
time……(thinking)…..This would be a (-) variance, which if I treated the 1's
as late, could offset those 1's. I don’t think I want to go above 100%. I
still need to identify and subtract those variances from others causing this
SP who is being performance graded to get be late. That’s what got me going
in the VBA direction. Regarding the VB.Net code - I understand, nothing's
free.


Thanks Again - appreciate any further input.


Jim Aksel said:
So you essentially want a Baseline Execution Index? The % of tasks that
finished on (or before) their baseline date compared to to total scheduled
to be completed?

I see what ou are saying, that if Task B starts late because predecessor A
finished late, you don't want to penalize task B for that? BLEI does not
respect that level of forgiveness... it only cares about finishes and would
therefore penalize both A and B. (At least in my world of goverbnment
contracting).

If you are looking at a "modified" you might want to explore Duration
Variance and Finish Variance. A task with 0 (or less) duration variance that
is actually complete is a good task since the task performed no worse than
as agreed... even if he started late or finished late. Is that the idea?

So you might want to test completed tasks where "Duration Variance No
Greater than 0" and "Finish Variance No Greater Than 0"
Run yourself up some counters ... (1) total tasks with Baseline Finish
within your period of interest which becomes your denominator), (2) tasks
within that group with 0 or less Finish Variance, (3) tasks from within
that group where there is positive finish variance. Remember that
unfinished tasks may corrupt the counts. Now you will also need another
counter where Finish Variance is positive and Duration Variance is no
greater than 0 (the forgiven tasks)

Something else to consider for a BLEI. What about a task whtat has a
baseline finish to the right of your period of interest, but they finshed
early (prior to the status date)? Do they count to help boost the
percentage?

I have some VB.NET code that calculates a BLEI and could be modified to meet
these requirements. However, this is the type of thing I do for a living so
that would not be free ware or postable.

Is that getting you closer? Or did I head off on the wrong path again?
Happy to provide more help if I can.

Jim Aksel


nickc said:
Sorry, I was not very clear on that. Not so much % completion as in
duration/ time remaining, but % on time completion for each task and tasks
to
date. I need to show how many tasks were completed based on the agreed
finish date. Something like % slippage. However, I will certainly use
this
(duration), as it will be very useful to report on.

Thanks,

Nick

:

I might be missing the whole point here but I'd go at it an entirely
different way.
If you want %time to completion, I think you want one of two things.

1. % of the duration of the task that is behind you (from the given start
date, not the baseline date.

OR

2. The % duratrion remaining on the task. That's just 100- the answer
to
the above.

So do this. Set a status date (project/project information...)
Now turn on the tracking toolbar (View/Toolbars/Tracking).
Select your tasks and status them as "As Scheduled"

That gives you the answer to (1). If you want, create a custom field as
100-[Percent Complete]

Is that what you need?
--
If this post was helpful, please consider rating it.

Jim Aksel, MVP

Check out my blog for more information:
http://www.msprojectblog.com



:

I am trying (and I mean trying) to create a subroutine for calculating
an
"Adjusted Variance" field. I certainly have a ways to go with VBA, as
I
thought I got everything be-bugged and working last night - only to be
more
disappointed looking at the results in the immediate window. I am
responsible for monitoring various KPI's (key performance indicators)
for our
service providers (SP's). One of these is % time to completion. The
challenge with the % time to completion thing is cases where the SP has
a
dependency (from) which is out of their control. So if the dependency
is
late, so is the service provider on their tasks. I need to account
for this
and give them "credit" for the portion of + variance which was not
their
responsibility. So I got this great idea (so I thought) to create an
"Adjusted Finish Variance" variable (array). I was trying to get the
program
to cycle through each task, look up an identifier for the SP when it
found
this, then look to see if the from dependency was that of another
resource,
and if so subtract the finish variance of that resource from the SP's
finish
variance. For example, if our SP has 4 days positive finish variance,
and
the from dependency was not them, but another resource, and that
resource was
late 2 days, then the adjusted finish variance for our SP would be 4 -
2 =
+2. One challenge I am having is understanding the relations between
tasks,
resources, and assignments when it comes to VBA. I tried utilizing
the
resource group field, however the program does not seem to be picking
it up
from each task. In fact, it is ignoring the tasks with resource group
"KPI".
I know there's probably an easier way than this VBA, however I would
like to
learn it for other purposes such as entering time phased data via
forms.
Here is my attempt at VBA, would appreciate any feedback.

Sub adjusted_variance()
Dim tsk As Task
Dim adj_var() As Integer
Dim z As Integer
Dim dep As TaskDependency
z = 0
For Each tsk In ActiveProject.Tasks
If tsk.ResourceGroup = "KPI" And tsk.Predecessors <> "NA" Then
For Each dep In tsk.TaskDependencies
MsgBox (tsk.Name) & (tsk.Predecessors)
If dep.From.ResourceGroup = support Then
z = z + 1
ReDim adj_var(z)
adj_var(z) = tsk.FinishVariance - dep.From.FinishVariance
Debug.Print adj_var(z)
Debug.Print (tsk.Name) & (tsk.Predecessors)
End If
Next dep
End If
Next tsk
End Sub
 
N

nickc

Good points - I know I have gone around on this myself. Since the last swap
of posts, I had some discussions which may make this easier for me. It looks
like I can go ahead with a straight forward KPI calculation with late/early
completions as is. In other words, like you mentioned - poor guy gets stuck.
Then in addition, somehow I may roll up the credits (early finish) and the
"finished late but wasn't my fault"' ones and produce them as a separate
number/report etc. Yes, we will have our meetings where the company rep.
will say "hey - my % of on time completion should be higher - there was this
time I was late because of ... and another time because of .... and it was
not my fault" I can then show these figures separately -somehow.

Nick

Jim Aksel said:
In MS Project, Finsh Variance that are negative mean early finishes compared
to baasline. Negative duration variance is also less than baseline.

Looks like we've come full circle. The real question is do we want to
penalize a guy for a late finish if he was forced to a late start. In the
government contracts I've worked, the poor guy gets stuck. In some of my
commercial endeavors they try to be a bit more understanding. The thinking
is that if the project falls behind, it becomes every task owner's job to try
to get back on schedule.

So I see the following that you have to have rules for. Assuming a baseline
finish prior to the start date:

1. Did it finish on time? If yes, we care nothing else.
2. If it did not finish on time, will this be forgiven?
3. How does Project determine if forgiveness will be granted? Example, I
was forced to a late start by 2 days, I finished late only 1 day. I just got
the PM back a day on his schedule. Am I a hero or a bum becuase I did not
finish on baseline?

I guess they pay me to think way too hard. :)
--
If this post was helpful, please consider rating it.

Jim Aksel, MVP

Check out my blog for more information:
http://www.msprojectblog.com



nickc said:
Jim:

I really appreciate you taking the time to think this over. I am not sure
about duration variance, since as long as our Service Provider gets the job
done on time, that particular performance metric will be fine. So if he
starts late, but still finishes on time, I think I'll be fine. However, I
could easily be overlooking something. I could probably have a simple Boolean
or integer type field for now, saying if finish variance < = 0 then … 1 else
0. Add all the 1's up and out of the total count, there's my % on time
complete. Which brings me to your point regarding finishing ahead of
time……(thinking)…..This would be a (-) variance, which if I treated the 1's
as late, could offset those 1's. I don’t think I want to go above 100%. I
still need to identify and subtract those variances from others causing this
SP who is being performance graded to get be late. That’s what got me going
in the VBA direction. Regarding the VB.Net code - I understand, nothing's
free.


Thanks Again - appreciate any further input.


Jim Aksel said:
So you essentially want a Baseline Execution Index? The % of tasks that
finished on (or before) their baseline date compared to to total scheduled
to be completed?

I see what ou are saying, that if Task B starts late because predecessor A
finished late, you don't want to penalize task B for that? BLEI does not
respect that level of forgiveness... it only cares about finishes and would
therefore penalize both A and B. (At least in my world of goverbnment
contracting).

If you are looking at a "modified" you might want to explore Duration
Variance and Finish Variance. A task with 0 (or less) duration variance that
is actually complete is a good task since the task performed no worse than
as agreed... even if he started late or finished late. Is that the idea?

So you might want to test completed tasks where "Duration Variance No
Greater than 0" and "Finish Variance No Greater Than 0"
Run yourself up some counters ... (1) total tasks with Baseline Finish
within your period of interest which becomes your denominator), (2) tasks
within that group with 0 or less Finish Variance, (3) tasks from within
that group where there is positive finish variance. Remember that
unfinished tasks may corrupt the counts. Now you will also need another
counter where Finish Variance is positive and Duration Variance is no
greater than 0 (the forgiven tasks)

Something else to consider for a BLEI. What about a task whtat has a
baseline finish to the right of your period of interest, but they finshed
early (prior to the status date)? Do they count to help boost the
percentage?

I have some VB.NET code that calculates a BLEI and could be modified to meet
these requirements. However, this is the type of thing I do for a living so
that would not be free ware or postable.

Is that getting you closer? Or did I head off on the wrong path again?
Happy to provide more help if I can.

Jim Aksel


Sorry, I was not very clear on that. Not so much % completion as in
duration/ time remaining, but % on time completion for each task and tasks
to
date. I need to show how many tasks were completed based on the agreed
finish date. Something like % slippage. However, I will certainly use
this
(duration), as it will be very useful to report on.

Thanks,

Nick

:

I might be missing the whole point here but I'd go at it an entirely
different way.
If you want %time to completion, I think you want one of two things.

1. % of the duration of the task that is behind you (from the given start
date, not the baseline date.

OR

2. The % duratrion remaining on the task. That's just 100- the answer
to
the above.

So do this. Set a status date (project/project information...)
Now turn on the tracking toolbar (View/Toolbars/Tracking).
Select your tasks and status them as "As Scheduled"

That gives you the answer to (1). If you want, create a custom field as
100-[Percent Complete]

Is that what you need?
--
If this post was helpful, please consider rating it.

Jim Aksel, MVP

Check out my blog for more information:
http://www.msprojectblog.com



:

I am trying (and I mean trying) to create a subroutine for calculating
an
"Adjusted Variance" field. I certainly have a ways to go with VBA, as
I
thought I got everything be-bugged and working last night - only to be
more
disappointed looking at the results in the immediate window. I am
responsible for monitoring various KPI's (key performance indicators)
for our
service providers (SP's). One of these is % time to completion. The
challenge with the % time to completion thing is cases where the SP has
a
dependency (from) which is out of their control. So if the dependency
is
late, so is the service provider on their tasks. I need to account
for this
and give them "credit" for the portion of + variance which was not
their
responsibility. So I got this great idea (so I thought) to create an
"Adjusted Finish Variance" variable (array). I was trying to get the
program
to cycle through each task, look up an identifier for the SP when it
found
this, then look to see if the from dependency was that of another
resource,
and if so subtract the finish variance of that resource from the SP's
finish
variance. For example, if our SP has 4 days positive finish variance,
and
the from dependency was not them, but another resource, and that
resource was
late 2 days, then the adjusted finish variance for our SP would be 4 -
2 =
+2. One challenge I am having is understanding the relations between
tasks,
resources, and assignments when it comes to VBA. I tried utilizing
the
resource group field, however the program does not seem to be picking
it up
from each task. In fact, it is ignoring the tasks with resource group
"KPI".
I know there's probably an easier way than this VBA, however I would
like to
learn it for other purposes such as entering time phased data via
forms.
Here is my attempt at VBA, would appreciate any feedback.

Sub adjusted_variance()
Dim tsk As Task
Dim adj_var() As Integer
Dim z As Integer
Dim dep As TaskDependency
z = 0
For Each tsk In ActiveProject.Tasks
If tsk.ResourceGroup = "KPI" And tsk.Predecessors <> "NA" Then
For Each dep In tsk.TaskDependencies
MsgBox (tsk.Name) & (tsk.Predecessors)
If dep.From.ResourceGroup = support Then
z = z + 1
ReDim adj_var(z)
adj_var(z) = tsk.FinishVariance - dep.From.FinishVariance
Debug.Print adj_var(z)
Debug.Print (tsk.Name) & (tsk.Predecessors)
End If
Next dep
End If
Next tsk
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top