クリティカルパスの算出について
作ろうと思ったきっかけ
以前、excelで作った自作のWBSにおけるデメリットの1つとして挙げた、クリティカルパスを把握できない(しにくい)だったり、スケジュール変更のたびに後続タスクの日付を手動で修正したり…という話。
今時点では使うことはないので放置していましたが、やっぱり勉強もかねて機能搭載することに。ほかのプロジェクトに行ったときのための準備も兼ねて。
クリティカルパス算出の方法
ES、EF、LS、LFについて
ES(EarlyStart:最早開始日)
EL(EarlyFinish:最早終了日)※ESに所要日数を足すだけ(当日含む)
LS(LateStart:最遅開始日)
LF(LateFinish:最遅終了日)※LSに所要日数を足すだけ(当日含む)
先行関係が存在するタスク間における「最初から最後までつづく唯一の一本道」。この道の中で1日でも遅延すると最後のタスクも遅延する。詳しい説明は他の方にお任せするとして、算出方法は以下の通り。
上記イメージのexcelも置いておきます。
WBSへの機能搭載
計算方法はなんとなくわかった。VBA化したときの大まかな流れは以下の通りでしょうか。
- プロジェクトの開始日を起点に全タスクのESを算出
- ESからEFを算出(これは簡単)
- EFの最大値を見つける
- EFの最大値を起点に、今度はESとは逆向きにLSを算出
- LSからLFを算出(これは簡単)
- EFとLFが同じ日付のタスクがクリティカルパス
うーむ、簡単そうだけど結構難しいかも。
EF算出やLS算出は再帰関数化しないといけさそう。先行関係タスク登録ミスのせいで簡単に無限ループしちゃうかもしれない。そこら辺のチェックの仕組みなど考えなくちゃ。。
次回に続く…