仕事でプロジェクト管理を行なうことになりました。
プロジェクトメンバーのタスクの進捗状況を管理するためにもガントチャートを使いたいのですが、エクセルで作成できますかね?
もちろんできますよ!
私もプロジェクトマネジメントを良く行いますが、クライアントとも共有することがあるのでエクセルで作成・管理しています。
それでは、作成方法を解説していきますね。
はじめに
本題に入る前に、この記事がおすすめな人を挙げてみます。
- 仕事でプロジェクトに携わる機会がある人
- 個人のタスク管理をしっかり行いたい人
- IF関数の実用的なテクニックを学びたい人
そもそもガントチャートとは?
ざっくり言うと、プロジェクト管理を行なうための表です。
1910年代に、アメリカ人の機械工学者であり経営コンサルタントでもあったヘンリー・ガントによって考案された。
プロジェクトを管理するために、プロジェクトの各段階を細かく作業単位まで展開し(Work Breakdown Structureを参照)Tree構造で階層表示、全体の作業の流れおよび進捗状況を表したものである。縦軸でWork Breakdown Structureを表し作業内容・担当・開始日・終了日・作業間の関連等を置き、横軸に日時(時間)をとって、横棒で行う期間及び進捗状況等を視覚的に示した図である。各作業の開始・終了時期、作業の流れ、進捗状況などが把握しやすくプロジェクト管理者やメンバーにとって非常に有効な管理手段である。
引用元: ガントチャート – Wikipedia
この表に必要な要素はまとめると、以下のとおりですね。
縦軸
縦軸は、少なくとも次の4つは必須ですね。
- 作業内容(タスク) ※WBS(Work Breakdown Structure)で階層化が必要
- 担当
- 開始日
- 終了日
その他、必要に応じて「作業間の関連」などの追加要素を入れると良いですよ。
私は、各タスクの「ステータス」や、「開始日」「終了日」を「予定」と「実績」でそれぞれ設けることが多いですね。
なお、一番のキーポイントはWBSで作業内容を実行するイメージが担当者間で共通認識となるレベルまで階層化・分解することが重要です。
WBSとは?
WBSはWork Breakdown Structureの略で、「作業分解構成図」とも言われます。
プロジェクトを理解し管理する上で、プロジェクトの各工程を各担当者の作業レベルまで展開し木構造にまとめたものである。どのレベルまで展開するかはプロジェクトの全メンバーが作業内容を「具体的に〇〇をする」と理解出来るレベルまでに分解するのが理想であるが、最低でも作業担当者とプロジェクト管理者の理解が得られるレベルまでは必要である。
一般的には、タスクを大・中・小の3階層程度に細分化します。
たとえば、「ダイエットする」というプロジェクトを例としてWBSを考えてみたのが、次の内容です。
3階層目の内容は、より具体的なタスクになっていることがわかりますね。
このように、実際のタスク群を進捗管理できる粒度まで細分化してあげると良いですよ。
横軸
横軸は管理しやすい時系列が必要です。
- 時系列(日時や週など)
あとは、タスクごとに横棒や記号などで予定や進捗状況を表せばガントチャートといえますね。
ガントチャートをエクセルで作成するメリット
実は、ガントチャートは専用ソフトが複数出ており、機能面は明らかにエクセルよりも上でしょう。
Microsoft自体も、「Microsoft Project」というプロジェクト管理を行なうための専用ソフトを販売しているくらいですし、フリーソフトでもいっぱいあります。
しかし、エクセルだからこそのメリットもあります。
一例として挙げていくとこんな感じです。
|
特に、一番上の例は、ある程度大きな会社だと「あるある」だと思います。(私の会社もそうです)
よほど決済権を持っているか、上司を説得するだけの材料を用意する材料がないと厳しいですね。
であれば、エクセルでさくっとガントチャートをつくれちゃえば、万事解決です!
エクセルでガントチャートを作成する4つの方法
実は、このガントチャート、豊富な機能を持つエクセルは大別して4つの方法で作成することができちゃいます。
- グラフ
- 関数
- 条件付き書式
- マクロ(VBA)
それぞれ一長一短ありますが、ガントチャートを良くメンテナンスされる方が使う機能や理解できる機能を選ぶことがおすすめですね。
今回は、2の関数で作成する方法について解説していきます。
(3以降は別記事で更新する予定です)
ちなみに、1のグラフで作成する方法はこちら↓
【グラフ編】エクセルでガントチャートをつくる方法(Excel2010) | Excelを制する者は人生を制す ~No Excel No Life~
目次1 はじめに2 そもそもガントチャートとは?3 ガントチャートをエクセルで作成するメリット4 エクセルでガ・・・
関数機能でガントチャートをつくる
ガントチャートのバーの部分を次のように記号で表現していきます。
この記号はIF関数を用いて、条件に該当する場合のみ表示するように設定します。
前提
最初に予めガントチャートのもととなる表を用意しておきましょう。
最低限、縦軸に必要な要素は下記の通りです。
- タスク名
- 開始日
- 終了日
横軸は、プロジェクトの期間に該当する日付を用意しましょう。
ここまでが、関数でガントチャートを作成する上での最低限必要な要素です。
実際のプロジェクトマネジメント上は、先述のとおり、期間や担当者などの要素もあると良いですね。
ちなみに、C・D列およびF列以降の1~3行は” mm/dd(aaa)”形式の「日付」のデータです。
では、実際のガントチャート部分の解説に移っていきましょう!
IF関数とAND関数・OR関数を組み合わせよう!
ガントチャート部分の記号を表示判定するIF関数は以下の内容です。(これはF4セルの例)
「=IF(OR(WEEKDAY(F$1)=1,WEEKDAY(F$1)=7,COUNTIF(テーブル1[祝日],F$1)),””,IF(AND(F$1>=$C4,F$1<=$D4),”■”,””))」
かなり多くの関数が含まれているので難しそうに見えますが、要は各タスクの各日のセルで「土日祝ならブランク、開始日~終了日なら”■”、それ以外ならブランク」という内容です。
このIF関数は、大きく分けて2つ条件分岐が含まれるため、それぞれ順番に詳細を解説していきますね。
なお、IF関数の基礎を知りたい方はこちらをどうぞ。
【エクセル初心者向け】データの条件分岐を自動化してストレスフリー!IF関数の使い方 | Excelを制する者は人生を制す ~No Excel No Life~
目次1 はじめに2 IF関数とは?3 IF関数が活躍する条件分岐の3ケース4 IF関数の構文を理解しよう!5 ・・・
【条件1】土日祝はOR関数で判定する
該当日(横軸の日付)が土日祝の判定は最初のIF関数のこの部分ですね。
「OR(WEEKDAY(F$1)=1,WEEKDAY(F$1)=7,COUNTIF(テーブル1[祝日],F$1))」
OR関数を用いて、次の3つの条件のいずれかに該当すれば”TRUE”と判定しています。
- 日曜日か → WEEKDAY(F$1)=1
- 土曜日か → WEEKDAY(F$1)=7
- 祝日か → COUNTIF(テーブル1[祝日],F$1)
ちなみに、WEEKDAY関数は該当日の曜日を1~7の数値で判定し、”1”は日曜、”7”は土曜を示します。
祝日は、「祝日」シートを用意しており、あらかじめテーブル化しています。
この部分をCOUNTIF関数で参照すると”テーブル1[祝日]”となり、この中から該当日があれば祝日だと判定します。
上記の3つのいずれかに該当した場合は、ブランク表示となり、それ以外は条件2の判定に移ります。
なお、IF関数とOR関数の組み合わせの基礎を知りたい方はこちらをどうぞ。
【エクセル中級者向け】IF関数の「論理式」をOR条件(○または□)にする方法 | Excelを制する者は人生を制す ~No Excel No Life~
目次1 はじめに2 IF関数の条件分岐をOR条件で判定したい!3 引数「論理式」にOR関数を組み合わせる!4 ・・・
【条件2】「開始日」以上かつ「終了日」以下かをAND関数で判定する
該当日(横軸の日付)が各タスクの「開始日」~「終了日」の期間中に該当するかどうかの判定は2つ目のIF関数の次の部分で行っています。
「AND(F$1>=$C4,F$1<=$D4)」
AND関数を用いて、次の2つの条件のすべてに該当すれば”TRUE”と判定しています。
- 開始日以上か → F$1>=$C4
- 終了日以下か → F$1<=$D4
上記の2つのいずれも該当した場合にはじめて”■”が表示され、それ以外はブランク表示になります。
なお、IF関数とAND関数の組み合わせの基礎を知りたい方はこちらをどうぞ。
【エクセル中級者向け】IF関数の「論理式」をAND条件(○かつ□)にする方法 | Excelを制する者は人生を制す ~No Excel No Life~
目次1 はじめに2 IF関数の条件分岐をAND条件で判定したい!3 引数「論理式」にAND関数を組み合わせる!・・・
完成!
これで、ガントチャート部分に該当する記号”■”は、C・D列の「開始日」「終了日」の値に応じて該当部分のみ表示されるようになりました!
さいごに
関数でガントチャートを作成することは、上記のように土日祝などの非営業日を除いて表現できるなど、自由度を高く表現することができますね。
その代わり、縦軸(タスクの数)×横軸(日付の数)のセルにIF関数のやや長めの数式が入るため、そのセル数に応じてはブックがかなり重くなるので注意しましょう。
あんまり巨大な表になってしまい、行や列の挿入・削除などでブックが落ちてしまう事象が出る場合は、ブックを分割するなども検討すると良いですね。
ご参考になれば幸いですm(_ _)m
本業のプロジェクトマネジメントで使うガントチャートは、この関数でつくるタイプのものですね。
やはり、ガントチャートの中で自由度がもっとも高い表なので、プロジェクトの内容に応じて柔軟に管理できるのでおすすめです!
あと、もちろん何度も言いますが、ガントチャートは進捗確認をいかに日々していくかが最重要事項なので、こちらもお忘れなく徹底しましょうね。
サンプルファイル
サンプルファイル_関数ガントチャート
※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)
上記工程で作成したサンプルファイルです。
ダウンロードして設定されたところを確認してみてください♪
自力でつくることが大変・時間がないと思った方は
そんな方には、エクセル本著者の私、森田が作成したガントチャート(有料)がおすすめです。
詳細は以下の記事をご参照の上、購入されるかご判断くださいね。
【エクセル本著者による有料テンプレート】WBS&ガントチャート(Excel関数版) | Excelを制する者は人生を制す ~No Excel No Life~
目次1 おすすめな人2 エクセルベースのWBS・ガントチャートで起こりがちな5つの問題点3 エクセル本著者によ・・・
いつもお世話になっております。
開始日と終了日を三つくらい作り、それぞれを四角のマークでカレンダーに表示させたいのですが、引数が多すぎるやらでうまくできません。。。
同じセルに同じ関数を複数入れることはできるのでしょうか。
菊田さん
コメントありがとうございます!
「開始日と終了日を三つくらい作り、~」とありますが、こちらは1行に複数の開始日・終了日があり、同じセルに3つ記号を連結するというイメージでしょうか?
もし、そうであれば、それぞれの開始日・終了日の数式同士を”&”でつなぎ合わせれば1セルに3つのタスクのステータスを表す記号を表現することは可能です。(管理しやすいかはさておき)
もし、イメージと違う場合はご連絡くださいm(_ _)m