quarta-feira, 20 de novembro de 2013

Calculando percentuais de desvio no cronograma - 01/02

Antes de começar

Olá pessoal

Há um tempo atrás, publiquei no blog um post que tratava das vantagens e importância de utilização – e quais as boas práticas recomendadas para criação de indicadores no Microsoft Project. Caso você não tenha tido a oportunidade de ler o post, sugiro reservar um tempinho antes de começar a ler este aqui, pois alguns dos passos discutidos serão utilizados novamente. O link para o post em questão é:


Introdução

Em muitos casos, apenas a observação e análise dos indicadores não é suficiente para que o usuário consiga ter a abrangência completa dos desvios existentes no cronograma. Usando como referência o post citado no parágrafo anterior, caso exista um desvio de prazo no projeto (ou seja, uma tarefa que tenha levado mais tempo de execução em relação ao que foi planejado), uma pergunta que talvez tenha que ser respondida é: quanto representa para a tarefa, em percentual, este desvio? E para as tarefas de resumo? E para o projeto como um todo? Neste sentido, os indicadores são ferramentas úteis na identificação de que existem desvios no cronograma – mas eles não conseguem detalhar qual o tamanho deste desvio.

Lembrete: esta será uma série de dois posts, o primeiro com foco em Prazo e o segundo com foco em Custos / Esforço.


Antes de criar a fórmula de desvio, é importante mencionar que algumas premissas estão sendo consideradas:
  • Você já possui um cronograma estruturado;
  • Seu cronograma está com a Linha de Base salva;
  • Você já conhece os mecanismos básicos para construção de fórmulas e indicadores no Microsoft Project.

 Caso uma (ou mais) dessas premissas não seja verdadeira, volto à sugestão de leitura do post disponível no link acima.

Percentual de desvio de prazo

Assumindo que as três premissas anteriores estão ok, é muito fácil criar o campo que irá calcular o desvio. Iremos começar pelo prazo. No seu cronograma, clique em Projeto > Campos Personalizados. Escolha o tipo Número e selecione o Número1 (caso esteja disponível). Para facilitar sua identificação, renomeie o campo para % Desvio Prazo. Em seguida, clique em Fórmula.

Ao pensar na estrutura da fórmula que irá calcular o Percentual de Desvio de Prazo, será necessário analisar e validar duas regras de conformidade para assegurar seu bom funcionamento. São elas:
  • A fórmula somente poderá ser calculada pelo Project caso a Linha de Base tenha sido salva;
  • A fórmula não poderá ser calculada para tarefas que sejam Milestones (pois essas tarefas são caracterizadas por duração igual a zero (0)).

 Como a primeira ação a ser tomada é verificar se a Linha de Base foi salva, será necessário a utilização da função IIF. Ela está disponível clicando em Função > Geral > IIF. Remova o item expressão e insira o campo [Término da Linha de Base] e insira o sinal de igual (=). Em seguida, siga a trilha Função > Microsoft Project > ProjectDateValue. Remova o item expressão e insira “ND”. O resultado até agora é o seguinte:

IIf( [Término da linha de base] =ProjDateValue( "ND" ) ; parte_verdadeira; parte_falsa )

Em seguida, para garantir o segundo ponto de checagem, após o parênteses que encerra a função ProjDateValue, insira a função OR. Clique em Campo > Sinalizador e escolha o item [Marco] (caso você esteja utilizando o Project 2010 ou anterior, o nome do campo é [Etapa]). Para que você possa entender melhor, este campo ([Marco] / [Etapa]) é do tipo Sim/Não, ou seja, caso a tarefa seja um Milestone, será considerado automaticamente pelo Project como sim. Após adicionar a expressão, a fórmula estará escrita da seguinte maneira:

Microsoft Project 2013
IIf( [Término da linha de base] =ProjDateValue( "ND" ) OR [Marco] ; parte_verdadeira; parte_falsa )

Microsoft Project 2007/2010
IIf( [Término da linha de base] =ProjDateValue( "ND" ) OR [Etapa] ; parte_verdadeira; parte_falsa )

Até o momento, a lógica da função IIF está realizando a seguinte análise:

Se o Término da Linha de base for igual a “ND” ou a tarefa for um Milestone.

Considerando que as duas regras de conformidade estão expressas na lógica da função, basta que as respostas sejam inseridas. Portanto, se não houver Linha de Base salva ou se a tarefa for um Milestone, o item parte_verdadeira da função IIF deverá ser substituído pelo número 0 (zero) – pois não haverá cálculo de desvio nesse cenário. Caso contrário, o item parte_falsa é que deverá calcular o percentual de desvio. A fórmula que deverá ser inserida no lugar da parte_falsa é:

[Variação do Término]/[Duração da Linha de Base]*100

A lógica por trás desta expressão é simples: o campo Variação do Término exibe a quantidade de dias de desvio de uma tarefa (a diferença entre o campo [Término] e o campo [Término da Linha de Base]). Supondo que uma tarefa esteja prevista para terminar no dia 11-Nov-2013 (Linha de Base), mas que só seja finalizada efetivamente no dia 12-Nov-2013 (Término), teremos uma variação de 1 dia. Se a Duração da Linha de Base estiver definida como 10 dias, por exemplo, teremos 1 dia de atraso sobre 10 dias de planejamento (1/10), resultando em 10% de desvio em relação ao previsto. O resultado final da fórmula será:

Microsoft Project 2013
IIf( [Término da linha de base] =ProjDateValue( "ND" ) OR [Marco] ; 0; [Variação do Término]/[Duração da Linha de Base] * 100 )

Microsoft Project 2007/2010
IIf( [Término da linha de base] =ProjDateValue( "ND" ) OR [Etapa] ; 0; [Variação do Término]/[Duração da Linha de Base] * 100 )


Após finalizar a construção da fórmula, clique em OK.  Não se esqueça de selecionar a opção Usar fórmula no cálculo das linhas de resumo de tarefas e de grupo:


Por fim, você poderá organizar uma tabela com as informações de desvio do seu cronograma, incluindo a coluna % Desvio Prazo, de modo que consiga acompanhar os desvios do cronograma em conjunto com os indicadores definidos na sua empresa:


Bonus track: é bem provável que o leitor deste post faça o seguinte questionamento: é possível exibir também o sinal de percentual (%) atrelado ao valor do desvio? A resposta é não e sim. Explico:

Não porque, como a fórmula está criada usando como referência um campo do tipo número, qualquer símbolo inserido invalida automaticamente a fórmula.

Sim porque, ao invés de utilizar um campo do tipo número, você pode utilizar um campo do tipo texto. Assim, ao final da fórmula, bastaria inserir a expressão – & ”%”. O “E comercial” tem como função concatenar (ou seja, juntar) dois textos. Assim, todo o resultado da fórmula poderia ser concatenado ao símbolo de percentual (que precisa estar com as aspas pois se trata de um texto).

Entretanto, a criação da fórmula usando um campo do tipo texto possui uma desvantagem: como o Microsoft Project não sabe o número de casas decimais que devem ser consideradas (dadas as características do campo), você pode passar a enxergar números com muitas casas decimais, como 66,6666666666667% ou 7,14285714285714% por exemplo. Deste modo, para contornar o problema, o melhor a fazer é utilizar a função INT (inteiro), que extrai apenas a parte inteira do número, ignorando as casas decimais. O resultado da fórmula (utilizando então um campo do tipo texto) seria:

Microsoft Project 2013
INT(IIf( [Término da linha de base] =ProjDateValue( "ND" ) OR [Marco] ; 0; [Variação do Término]/[Duração da Linha de Base] * 100 )) & "%"

Microsoft Project 2007/2010
INT(IIf( [Término da linha de base] =ProjDateValue( "ND" ) OR [Etapa] ; 0; [Variação do Término]/[Duração da Linha de Base] * 100 ) & "%"

Por hoje, é isso. Espero que o post tenha sido útil.

Você também pode efetuar o download do post neste link: https://www.box.com/s/idn6v70r7ibpx9tyk41u

Um abraço e até a próxima!


2 comentários:

  1. Prezado Raphael, você informou que um segundo post teria foco no cálculo de desvio considerando custo. Este post foi publicado? Se positivo onde consultar?

    ResponderExcluir
    Respostas
    1. Olá Henrique, obrigado pela visita.

      Rapaz.... agora que você escreveu o comentário é que fui perceber que o post sobre custo não foi concluído. Que vexame :-(

      Bem, para não fazer você esperar até que o post saia, já vou compartilhar por aqui. Basicamente você vai seguir os mesmos passos descritos neste post para criar o campo. Porém, o resultado final da fórmula será:

      Microsoft Project 2013
      IIf( [Término da linha de base] =ProjDateValue( "ND" ) OR [Marco] OR [Custo da Linha de Base] =0; 0; [Variação do Custo]/[Custo da Linha de Base] * 100 )

      Microsoft Project 2007/2010
      IIf( [Término da linha de base] =ProjDateValue( "ND" ) OR [Etapa] OR [Custo da Linha de Base]= 0; 0; [Variação do Custo]/[Custo da Linha de Base] * 100 )

      Um abração!

      Excluir