Googleスプレッドシートでガントチャート作成:開始・終了日付を変えるだけで自動更新

スプレッドシートでガントチャートを作成してみたけれど、タスク期間を変更するたびに手動で修正…。そのような作業が面倒に感じることはありませんか?
Googleスプレッドシートの数式と条件付き書式を活用すれば、開始日や終了日を変えるだけで自動更新されるガントチャートを作成できます。
この記事では、「プロジェクトのタスク」テンプレートを活用し、時間短縮につながるガントチャートの作成方法をご紹介します。
なお、Google Workspaceをお使いの方は、「タイムラインビュー」機能を使ったガントチャート作成方法もあるため、そちらを活用するとより効率的です。

完成イメージ

- 開始日、終了日を入力するとガントチャートが作成される
- 各タスクの状態(開始前、処理中、完了)を色分けして一目で把握できる
- Googleスプレッドシートの「プロジェクトのタスク」テンプレートを活用
使用する数式
日付を自動入力する数式(K1セル)
=IF(COUNTA(E2:E)=0, "", ARRAYFORMULA(MIN(FILTER(E2:E, E2:E<>"")) + SEQUENCE(1, MAX(FILTER(F2:F, F2:F<>"")) - MIN(FILTER(E2:E, E2:E<>"")) + 1, 0)))
タスク期間を表示する数式(K2セル)
=ARRAYFORMULA(IF((($E2:$E<>"") * ($F2:$F<>"")) * (K$1:1 >= $E2:$E) * (K$1:1 <= $F2:$F), $D2:$D, ""))
上記2つの数式と条件付き書式を組み合わせることでガントチャートを作成できます。
少し長い数式ですが、そのままコピー・貼り付けで使用できます。(数式の説明は手順内に記載)
スプレッドシートで動的なガントチャートを作る手順

Googleスプレッドシートを開き、メニューの「挿入」から「表」をクリックします。
その後、画面右に表示される表の中から「プロジェクトのタスク」を選択します。

表のうち、以下の列を入力します。
- A列:タスク名(任意)
- D列:ステータス
- E列:開始日
- F列:終了日
その他の列は不要であれば、数式入力後に削除しても問題ありません。

K1セルに以下の数式を入力します。
アレイフォーミュラ関数を使用しているため、K1以降の列は自動で日付が表示されます。
日付を自動入力する数式
=IF(COUNTA(E2:E)=0, "", ARRAYFORMULA(MIN(FILTER(E2:E, E2:E<>"")) + SEQUENCE(1, MAX(FILTER(F2:F, F2:F<>"")) - MIN(FILTER(E2:E, E2:E<>"")) + 1, 0)))
数式の説明
IF(COUNTA(E2:E)=0, "", ...)
-
開始日(E列)が空の場合、日付が表示されないようにしています。
ARRAYFORMULA
-
数式全体を1つのセルで処理し、日付を動的に生成します。
SEQUENCE
-
開始日から終了日までの日付を生成します。
SEQUENCE(1, 列数)
で横方向に日付を展開します。 MIN(FILTER(E2:E, E2:E<>""))
-
開始日(E列)の中で最も早い日付を取得します。
空白セルを除外するために
FILTER
関数を使っています。 MAX(FILTER(F2:F, F2:F<>""))
-
終了日(F列)の中で最も遅い日付を取得します。
E列の中で最も早い開始日からF列の最も遅い終了日までの日付が自動で横に展開されます。
この数式を使うことで、ガントチャートの土台となる横軸を作成できます。

K2セルに以下の数式を入力します。
こちらの数式もアレイフォーミュラ関数を使用しているため、K2以降のセルも自動で数式が適用されます。
タスク期間を横軸に表示する数式
=ARRAYFORMULA(IF((($E2:$E<>"") * ($F2:$F<>"")) * (K$1:1 >= $E2:$E) * (K$1:1 <= $F2:$F), $D2:$D, ""))
数式の説明
ARRAYFORMULA
-
数式全体を配列として処理することで、複数行のデータを一括で計算します。
手動で複数の数式を入力する必要がなくなります。
$E2:$E<>""
と$F2:$F<>""
-
開始日(E列)および終了日(F列)が空白でない行のみ処理を実行します。
これにより、空白の行を無視できます。
(K$1:1 >= $E2:$E) * (K$1:1 <= $F2:$F)
-
ガントチャートの横軸の日付(K1セル以降)を基準に、以下の条件をチェックします:
- 日付が開始日以上であること。
- 日付が終了日以下であること。
この条件を満たす場合にのみ、対応するセルにタスク名を表示します。
$D2:$D
-
条件を満たしたセルに表示される値。ここでは、ステータス(D列の値)を取得します。
この数式では、該当する期間のセルにステータスが表示されるだけなので、条件付き書式で色付けしてガントチャートにします。

スプレッドシートのメニュー「表示形式」から「条件付き書式」をクリックします。

- 色分けする範囲
-
ガントチャートの全体範囲を適用します。
例: K2:CA15
- 条件付き書式のルール設定
-
カスタム数式を選択し、それぞれのタスクを色分けします。
- 開始前の場合
- 数式:
=k2="開始前"
- テキストの色:青
- 塗りつぶし:青
- 数式:
- 処理中の場合
- 数式:
=k2="処理中"
- テキストの色:黄色
- 塗りつぶし:黄色
- 数式:
- ブロック済みの場合
- 数式:
=k2="ブロック済み"
- テキストの色:赤
- 塗りつぶし:赤
- 数式:
- 完了の場合
- 数式:
=k2="完了"
- テキストの色:緑
- 塗りつぶし:緑
- 数式:
- 開始前の場合

テキストの色と、塗りつぶしを同じ色にすることで文字が見えなくなり、チャートだけが表示されます。

E列の開始日、F列の終了日を変更すると、チャートも変更されます。
まとめ
数式と条件付き書式を活用することで、Googleスプレッドシート上で動的なガントチャートを作成できます。
この方法を使用すれば、開始日と終了日を変更するだけでチャートが自動的に更新されるため、手動で修正する手間を省けます。
スプレッドシート上でガントチャートを作成したい時にご活用ください。
なお、複数のプロジェクトを同時に管理したり、より高度な機能が必要な場合には、専用のプロジェクト管理ツール(例:Trello、Asana、Jootoなど)を活用することでより効率的に管理できます。

弊社では、Google Apps Script(GAS)を活用した業務効率化サポートのほか、ITツールの導入支援やIT導入補助金の申請サポートも行っております。
ぜひお気軽にご相談ください。貴方の業務改善を全力でサポートいたします。
コメント