一番上の入り口へ > excel > お手製 簡易ガントチャートを作ってみる (レッツトライExcel)

お手製 簡易ガントチャートを作ってみる
(レッツトライExcel)

--

このページで説明する内容

工程管理で有名なガントチャートについて、Excelで気軽に実践してみます(マクロは使いません)。

どの方法で作るか


実際に作成する方法として、以下の5つほど思いつきました。
今回はそれらの内、3つ[*](関数式条件付き書式グラフ)を紹介します。

・関数式 *
・条件付き書式 *
・グラフ *
・手書き
・マクロでの方法

ガントチャート(Wikipedia) とは?

作成のダイジェスト

それでは、それぞれのパターンで作り方を順に説明します。
(パターン1:関数式 / パターン2:条件付き書式 / パターン3:グラフ)


まずは 関数式から説明します。

パターン1:関数式

(1)まずはタスク(ここでは、A〜Dタスク)を左側(表←)に並べます。


(2)日付(ここでは 16日〜24日)を上側に横軸で作成します(表示形式:d)。


(3)タスクごとの、開始・終了日付を埋めます。


(4)ここからは本題です。中身のガントチャート部分は、日付と各タスクの日付を利用して自動的に表示されるように関数を入力します。

それでは、左上の隅(16日 タスクA)に式を入れてみましょう。

(完成図)
・タスクA[5行目]の開始[$C5]と終了[$D5]の範囲内にある日付[E$3](16,17日)であれば■を表示するようにします。赤吹き出しの部分
=if(and(E$3>=$C5,E$3<=$D5),"■","")

・手を抜くコツとしては、=の把握と$の使い方です。うまく左上のセルに入力すれば、そこからセルのドラッグだけで表全体の他のセルに適用できます(開始・終了へのセル参照では列(図ではC,D列)の前に$をつけて絶対参照にし、日付セルへの参照では同じく行(図では3の前)に$をつけます)。


キャラベースの他の例として、単純に進捗度であれば REPT関数(この関数は 一定の文字を繰り返し(repeatし)ます)を使う方法があります。(REPT進捗説明ページ)
タスク進捗_
A80%=REPT("■",C6*100/10)&REPT("□",(100-C6*100)/10)
B40%■■■■□□□□□□
C30%■■■□□□□□□□


パターン2:条件付き書式

条件付き書式も全く同様にできます。
パターン1の関数式であったところを、条件付き書式に置き替えているだけで、本質は同じです。



(a)設定の仕方は条件付き書式を設定する対象範囲全体を左上から右下まで選択し、条件付き書式の画面を開きます(上図 右側ダイアログ)。
(b-1)入力設定するダイアログで「数式」を選択します。
(b-2)「次の数式を〜」(図中 右側中程)の部分には上記(関数式のパターン1)と全く同じ判定式を入力しています。
(c)また、書式としてセルの塗りつぶしにしています。


(完成図)

パターン1,2は 多少デザイン的にボテッとしていて気になる人もいるかも知れません。 そういう人は、もう少し手間をかけるグラフ3の方が良いかもしれません。

パターン3:グラフ

グラフ用のカラムを用意して、その値を使ってグラフ表示させます。 既出の2パターンは範囲内かどうかの式を作成しましたが、こちらはグラフ幅を用意するところが考え方として違います。
(最終的な表示方法と、そのための積み上げ棒グラフの設定の仕方を考えます)

グラフ全体像の作成

(1)先ほど説明したパターンと同様に、事前に基本の表を作っておきます。タスクを左側に並べ、開始、終了日付列を作ります。
(2)使用するグラフは積み上げ横棒グラフ [開始+終了の棒グラフとするので]とする予定です

図・グラフの最小値と最大値 (3),(4-b)

積み上げ用の差分 (植木算なので +1しています)

(3)グラフ全体の開始と終了日付に対応する最小値、最大値を設定します(図 上の吹き出し)。 ※日付についてmin,max関数を使い、表示形式を数値で表示させると値がわかります。例えば 2010/3/16を Excelの内部では数値の39523ぐらいで表しています。

各タスクのグラフ用数値を用意

(4-a)各タスクについてのMINから開始までの差の日数(ちなみにExcelは1日=1.0換算です)部分を用意します。
図では非表示にしていますが、例えば終了の右側の列に MINとの差分を計算する式を入れておきます。

(4-b)各タスクで開始から終了までの差を用意します。
※上図では差分セルを作って、そこをグラフ範囲としています。

グラフの微調整

(5)開始まで部分(4-aで作成した数値を利用)は透明にします(左側を透明にすることで、チャートのように見せる)
※また、開始までの距離を出すため、グラフの開始基準として最小値を把握しておく必要があります( (3)で↑に書いてあります)。
(6)タスクの軸は反転させます[グラフ表示上のタスクが上下逆になってしまうので]
(7)日付軸はグラフ上側に表示されるようにします。
(8)グラフの縦サイズ等をマウスで微調整し、タスク幅、日付幅と合わせます。

図・グラフの終了範囲 (4-b),(5)
つまり、それぞれのタスクには、"開始日までの日数"(グラフ上透明の左側バー)、"開始日から終了日までの日数"(グラフ上青い右側の積み上げバー)という、2つの列があります。また、見栄えを考えて、完成したらそれらのカラム列を非表示にさせます。
数値の大きさ 数値の意味 グラフの箇所
最小値〜開始日付 全体の開始日〜タスクの開始日 グラフ左側の透明部分(4-aの部分)
開始〜終了日付 タスクの期間 表、グラフの青い部分

完成

(完成図)

応用例として、終了予定日や、進捗も同様にグラフ幅用のカラムを用意することで作れますね。


グラフ作成のこのテクニックの透明化と積み上げのグラフを応用すれば例えばピラミッド構成の人口表など作れます。

グラフの手動作成をマクロした例のようです
VBA Excel:「ガントチャートをグラフで作る」 - 35歳の壁

まとめ

今回の場合のように、月日が進んでも自動的に表示が変わるように設定しておけば、手間が省けますね。このようにExcelでちょっとした内容を数値に連動させてグラフィカルに表示させることができるようになると、低コストで状況が把握できます。つまり見える化を維持したまま、手間を省くことができます。

学んだスキル

・ガントチャートの適応例
・数式による関数の利用方法
・相対/絶対参照($A$1など)の利用方法
・条件付き書式やグラフの違った使い方

それぞれの利点

・関数方式は初心者でも作りやすいです。慣れればグラフもまあまあ簡単です。一方追加などが意外と面倒で範囲が壊れた場合、新規に作り直すことも多いです。
・条件付き書式での方法は 2003以前のバージョンでは3つしか設定できないため制約が大きいです。
・関数のキャラクタで行う場合、セルの境目のスキマが気になります(こんな感じ■■□□)。
・グラフはやはり軽いようです。
・グラフの方式は、作る上で予定と実績の2つを組み合わせるのが難しいです。

発展

今回は簡単な例でしたので、物足りない人へもっと実際に活用できるような例を紹介します。
・タスクの進捗度を作ったり、対応日数を表示させる。
・開始/終了日付について予定と実績を分ける。
・タスクを多段階層にする(1-2-4のタスクとか、下位タスクとか、サブタスクとか)。
・開始日終了日を見分けやすくする(関数の場合 →を使うとか、当日の場合☆をつかうとか)。
・予定と実績を重ねて表示させる(条件付き書式の場合、薄い色が予定で、濃い色が実績など)。
・「今日」を印す。
・日付延伸やタスクの追加が簡単にできる。

タスクの因果関係までやろうとすると、関数ではきついです。マクロの方が楽です。
実績の描き方は意外と悩みます。


またテンプレートして一度作ったものを再活用したり、他のスケジュール管理に転用したりと応用できます。

類似リンク

進捗度をテキストで少しかっこ良く定量的に表示するちょいわざ

入力規則をセルによって自動的に変わるようにするちょいわざ

リストの過不足をチェック!(レッツトライExcel)

宴会幹事向け出欠確認アンケートを作る(レッツトライExcel)

ちょっと助かるショートカット (Excel操作編)


一番上の入り口へ > excel > お手製 簡易ガントチャートを作ってみる (レッツトライExcel)