HAKADORI その他

Excelでガントチャートを作成

2016.04.20 水

Excelでガントチャートを作成

こんにちは、デジタル事業本部の藤田です。

Excelではスケジュールの進捗を管理するガントチャートを作成することができます。今回は架空クライアントの案件をExcelでスケジューリングする方法をご紹介します。

● ガントチャート作成のプロセス

クライアント:学生向け不動産業者

クライアントは大学入試試験会場に来ている受験生にチラシを配る。
・チラシの内容は物件案内
・チラシの内容、印刷部数は試験会場(大学)ごとに違う
タクトシステムはチラシを作成。
・チラシをオンデマンドで印刷し梱包
配布日の3日前までに発送
配布日の2日前までに納品

まず、用意されたのは「大学名」「試験会場」「配布日」のExcelリストです。大学入試なので1月下旬から3月中頃まで続きます。行数は約240件程度あります。

240件程度あります。

●発送日と納品日の列を追加

配布日列の左に列を挿入して発送日納品日を入れます。

納品日

配布日の2日前までに納品」なので配布日から2を引きます。
→セルに「=F3-2」と入力し列の終わりまでドラッグ
配布日が「1月23日」であれば「1月21日」と表記されます。

発送日

配布日の3日前までに発送」なので配布日から3を引きます。
→セルに「=G3-3」と入力し列の終わりまでドラッグ
配布日が「1月23日」であれば「1月20日」と表記されます。

横軸に日付を入れる

最初の発送日が1月20日なので、セルI2に「1/20」を入力。セルの値が3月21日になるまで右にドラッグ。

日付を入れました

ここから本題です。該当セルの行と列をみて「発送日納品日配布日」かどうかを判別します。

発送日のIF関数

日付の行($2)と発送日の列($E)が一致するかどうか。
一致すればセルE2(「発送日」)の内容を反映する。
=IF(I$2=$E3,$E$2,"") ※セルI3に入力した場合。

納品日のIF関数

日付の行($2)と納品日の列($F)が一致するかどうか。
一致すればセルF2(「納品日」)の内容を反映する。
=IF(J$2=$F3,$F$2,"") ※セルJ3に入力した場合。

>配布日のIF関数

日付の行($2)と配布日の列($G)が一致するかどうか。
一致すればセルG2(「配布日」)の内容を反映する。
=IF(L$2=$G3,$G$2,"") ※セルG3に入力した場合。

上記3つの条件を組み合わせる

日付の行($2)と配布日の列($G)が一致するかどうか。
一致すればセルG2(「配布日」)の内容を反映。
一致しなければ日付の行($2)と納品日の列($F)が一致するかどうか。
一致すればセルF2(「納品日」)の内容を反映。
一致しなければ日付の行($2)と発送日の列($E)が一致するかどうか。
一致すればセルE2(「発送日」)の内容を反映。
どれにも一致しなければ空白
=IF($G3=I$2,$G$2,IF($F3=I$2,$F$2,IF($E3=I$2,$E$2,""))) ※セルI3に入力した場合。

これをすべてのセルに適用させると行ごとの計画表が作成されます!
ガントチャートできあがりです!!

● 土日祝日はさけたい!

さて、「発送日」が土日祝日に掛かっています。機械的に配布日の3日前と表記しているので当然です。できれば土日祝日は前倒ししておきたいところです。

「発送日」の設定を変更

発送日が土日になる場合は前倒しして金曜日になるように設定をかえます。
配布日が水曜日であれば3日前は日曜日なので発送日は金曜日に変更します。
=IF(WEEKDAY(G3)=4,G3-5,G3-3) ※セルE3に入力した場合
配布日が火曜日であれば3日前は日曜日なので発送日は金曜日に変更します。
=IF(WEEKDAY(G3)=3,G3-4,G3-3) ※セルE3に入力した場合
上記2つの条件を組み合わせます。
=IF(WEEKDAY(G3)=4,G3-5,IF(WEEKDAY(G3)=3,G3-4,G3-3)) ※セルE3に入力した場合
これで発送日が土日であれば金曜日に前倒しになります。

祝日をさける

さらに、期間中に祝日(2月11日 建国記念の日)があるのでこの日をさけるように設定をかえます。
配布日の3日前が2月11日であれば、発送日配布日の4日前に変更します。
=IF(AND(MONTH(G3-3)=2,DAY(G3-3)=11),G3-4,G3-3) ※セルE3に入力した場合

土日と祝日をさける設定を組み合わせる
発送日が日曜日であれば発送日は金曜日にして、発送日が土曜日または2月11日であれば発送日は前日にします
=IF(WEEKDAY(G3)=4,G3-5,IF(OR(WEEKDAY(G3)=3,(AND(MONTH(G3-3)=2,DAY(G3-3)=11))),G3-4,G3-3)) ※セルE3に入力した場合
これで土日祝日をさけることができました。

ガントチャート完成です!

余談ですが、セルに「発送日」「納品日」「配布日」という文字が入った場合は色がつくように条件付き書式を設定しておくとみやすくなります。また、土日祝日もセルが列単位で色がつくように設定してあります。このあたりの話はまたいずれ

  • この記事を書いた人

Noriaki Fujita

藤田 徳朗(フジタノリアキ) デジタル事業本部 DXソリューショングループ所属 Scriptを書いたり、アクセス解析をしています。どうぞよろしくお願いします。

-HAKADORI, その他
-