クリティカルパスの算出について

作ろうと思ったきっかけ

以前、excelで作った自作のWBSにおけるデメリットの1つとして挙げた、クリティカルパスを把握できない(しにくい)だったり、スケジュール変更のたびに後続タスクの日付を手動で修正したり…という話。

今時点では使うことはないので放置していましたが、やっぱり勉強もかねて機能搭載することに。ほかのプロジェクトに行ったときのための準備も兼ねて。

 

クリティカルパス算出の方法

ES、EF、LS、LFについて

ES(EarlyStart:最早開始日)

EL(EarlyFinish:最早終了日)※ESに所要日数を足すだけ(当日含む)

LS(LateStart:最遅開始日)

LF(LateFinish:最遅終了日)※LSに所要日数を足すだけ(当日含む)

先行関係が存在するタスク間における「最初から最後までつづく唯一の一本道」。この道の中で1日でも遅延すると最後のタスクも遅延する。詳しい説明は他の方にお任せするとして、算出方法は以下の通り。

f:id:kokke33:20200713222602p:plain

クリティカルパス算出

上記イメージのexcelも置いておきます。

github.com

WBSへの機能搭載

 計算方法はなんとなくわかった。VBA化したときの大まかな流れは以下の通りでしょうか。

  1. プロジェクトの開始日を起点に全タスクのESを算出
  2. ESからEFを算出(これは簡単)
  3. EFの最大値を見つける
  4. EFの最大値を起点に、今度はESとは逆向きにLSを算出
  5. LSからLFを算出(これは簡単)
  6. EFとLFが同じ日付のタスクがクリティカルパス

うーむ、簡単そうだけど結構難しいかも。

EF算出やLS算出は再帰関数化しないといけさそう。先行関係タスク登録ミスのせいで簡単に無限ループしちゃうかもしれない。そこら辺のチェックの仕組みなど考えなくちゃ。。

 

次回に続く…