¡Bienvenido! al foro de consultas y comentarios de Ms Project

Envía a imartin@epmconsultores.com o a través de mi perfil tus consultas sobre Microsoft Project, Professional, Server, etc ... o bien añade respuestas y comentarios a los temas ya publicados. Ignacio Martín
http://www.epmconsultores.com/cursomicrosoftproject2013.html
http://www.epmconsultores.com/cursomsproject2013.html
http://www.epmconsultores.com/cursodeproject.html

29 julio 2011

Fórmula para Calcular % Completado Previsto a una Fecha y ¡Cambios de Nombre de Campos en Project 2010!


Buenos Días.

Estoy tratando de utilizar la fórmula siguiente:

Str(IIf([Fin de línea base]<=[Fecha de estado],100,IIf([Comienzo de línea base]>[Fecha de estado],0,Round((100*(Val(ProjDateDiff([Comienzo de línea base],[Fecha de estado],"Calendario 1"))/[Duración])))))) & "%"

con algunos datos diferente a los que en un foro definiste, me ha servido mucho, pero no sé por qué ahora cuando ingreso a la fórmula me envía un error que dice “La fórmula contiene un error de sintaxis o una referencia a un nombre de campo o función desconocidos.”, y no puedo hacerle ningún cambio. La fórmula me calcula cuando hago cambios, pero me doy cuenta que cuando hago el seguimiento y varía la duración el porcentaje que calcula es en base a esa duración y no a la duración de la línea base, por lo tanto me envía un error en el porcentaje donde a veces me sube al 100%.

¿Sabrías la razón por la cual me envía este mensaje de error?

¿Cómo podría solucionarlo?

Saludos
Johanny

Respuesta [Ignacio Martín]:

Hola Johanny,

antes de nada comentar que la denominación de algunos campos de Project 2010 y 2013 han cambiado respecto a versiones anteriores, por lo que tablas, fórmulas, macros, etc. diseñadas para versiones anteriores de Project 2010 y que incluyen alguno de esos campos, puede dar error. De manera recíproca, si fueron diseñadas para 2010, pueden dar error en Project 2007.

En concreto:

Antes de Project 2010       Project 2010
---------------------------      -----------------------------
Duración prevista           Duración de línea base
Comienzo previsto          Comienzo de línea base
Fin previsto                     Fin de línea base

También es distinto el separador dentro de una fórmula personalizada,

Antes de Project 2010       Project 2010
---------------------------      -----------------------------
 ;  (punto y coma)               ,  (coma)

Respecto a tu consulta de error y optimización de la fórmula para calcular el % completado del plan previsto o Línea de base a una Fecha de estado, incluida en un campo personalizado de Texto de tarea, siendo la que originalmente me envías la siguiente:

Str(IIf([Fin de línea base]<=[Fecha de estado],100,IIf([Comienzo de línea base]>[Fecha de estado],0,Round((100*(Val(ProjDateDiff([Comienzo de línea base],[Fecha de estado],"Calendario 1"))/[Duración])))))) & "%"

debes considerar y revisar estos puntos,

1. ¿Existe el “Calendario 1” en el proyecto al que se hace referencia en la fórmula?, de lo contrario se muestra #ERROR en el resultado, y si no crearlo o cambiarlo por otro, el del proyecto es el “Estándar”. Si no se pone nada (borrar “;Calendario...” en la fórmula), la función (ProjDateDiff) usa el calendario asignado al proyecto (por defecto Estándar).

2. En la fórmula, para calcular el % completado previsto de una tarea a la fecha de estado (último condicionante de los tres que considera la fórmula) aparece el campo “Duración”, pero como tu bien apuntas, lo correcto es hacer referencia a la “Duración prevista” ó “Duración de línea base” según la versión.

3. Así pues, dependiendo de la versión de Project la fórmula es distinta en lo referente a los campos Comienzo, Fin y Duración prevista, y los separadores entre campos, estando correctas las siguientes:

Anterior Project 2010 (2007, 2003, 2002, 2000):

Str(IIf([Fin previsto]<=[Fecha de estado],100,IIf([Comienzo previsto]>[Fecha de estado],0,Round((100*(Val(ProjDateDiff([Comienzo previsto],[Fecha de estado],"Calendario 1"))/[Duración prevista])))))) & "%"

Project 2010:

Str(IIf([Fin de línea base]<=[Fecha de estado];100;IIf([Comienzo de línea base]>[Fecha de estado];0;Round((100*(Val(ProjDateDiff([Comienzo de línea base];[Fecha de estado];"Calendario 1"))/[Duración de línea base])))))) & "%"

Project 2013:

IIf(ProjDateValue("NOD")=[Comienzo previsto];"";Str(IIf([Fin de línea base]<=[Fecha de estado];100;IIf([Comienzo previsto]>[Fecha de estado];0;Round((100*(Val(ProjDateDiff([Comienzo previsto];[Fecha de estado]))/[Duración de línea base])))))) & "%")

Nota.- En esta última fórmula para la versión de Project 2013 se ha incluido la condición de que el campo % completado vacío se muestre en blanco si no existe valor en el campo Comienzo de línea base, que por cierto, sorprendentemente y quizás por un error en esta versión 2013 ¡aparece como Comienzo previsto! y no como Comienzo de línea base!

4. Podría ocurrir un error debido a una función desconocida cuando el ordenador no tiene instalado los complementos Visual Basic para Aplicaciones de Office. En este caso la función Round incluida en las fórmulas es desconocida para Ms Project y dará un error. Como alternativa se podría sustituir por la función Int (integer o parte entera) que si reconoce Project, aunque asumiendo un pequeño error de truncamiento en la parte decimal.

Importante.- Como he comentado en otras ocasiones, estas fórmulas que calculan el avance previsto o % completado de la línea de base a una fecha de estado, son aproximaciones que pueden no coincidir con los valores esperados cuando por ejemplo los calendarios de los recursos asignados si los hubiera, no coinciden con el calendario del proyecto y sus jornadas de trabajo, o la línea de base se estableció sobre tareas divididas, discontinuas o interrumpidas, y quizás en algún otro caso relativamente infrecuente.

Nota.- Al abrir un proyecto 2007 o anterior con campos personalizados y fórmulas, en Project 2010 y 2013, estos últimos lo convierten automáticamente a sus nuevas características, sin necesidad de editarlo, no así a la inversa de 2010 o 2013 a 2007, en cuyo caso Project 2007 no podrá siquiera abrir el archivo 2010 o 2013.

Espero haberte ayudado,

un saludo.