Excelガントチャートで月・週・時間単位を可変に!条件付き書式利用【テンプレ有】

PR
Thumbnail for Excelガントチャートで月・週・時間単位を可変に!条件付き書式利用【テンプレ有】

本記事ではExcel(エクセル)で、横軸(時間軸)の単位を「月」「週」「時間」などに自由に切り替えられる可変型のガントチャートの作り方について解説します。

参考:» Excelガントチャートの作り方+テンプレート【基本~拡張】

【内容】

  • 「年・月・週・日・時間」を切り替えられる可変型ガントチャートの設計
  • XLOOKUP関数・COLUMN関数・TEXT関数・条件付き書式を組み合わせた実装方法

「年」単位の長期計画から「時間」単位の当日タスクまでを、マクロ(VBA)を使わずに 1枚のシートだけでシームレスに切り替えて管理 できます。

吉峰
吉峰

テンプレートとして使用可能な完成品は、本ページの中で無料ダウンロード可能です。

Excelのバージョン

本記事は、Excel 2024(ローカルまたは共有フォルダでの運用) を前提に作成しています。環境によっては、UIなどの細かな点が異なる場合があります。

目次

設計|Excelガントチャートの時間単位の可変

ガントチャートの横軸(時間軸)を作る方法として、単位(「月単位」「時間単位」など)がシートごとに固定の「固定型」が一般的ですが、「可変型」を作ることも可能です。

固定型と可変型の違い

  • 固定型

    • 時間軸の時間単位(差分)が一定のガントチャート。シンプルな数式のみで実装できる。

    • 「日単位」「時間単位」で横軸を固定すると、長期プロジェクトでは横スクロールの手間が増え、全体を鳥瞰しづらい。逆に「月単位」に固定すると、当日の分・時間単位の精細な進捗管理がしづらい。

      時間単位数式例実装例
      月単位=EDATE(B1,1)
      1
      週単位=B1+7
      1
      日単位=B1+1
      1
      時間単位=B1+TIME(1,0,0)
      1
  • 可変型

    • 時間軸の時間単位(差分)を変えられるようにし、この値に従って動的に時間軸を生成するガントチャート。
    • 1つのファイル・単一のシート上で、月単位の大枠スケジュール確認から、日・時間単位のタスク管理までをシームレスに切り替えられる。
      1
      2
      3
吉峰
吉峰

可変型にすることで、長期の見通し と 当日の時間管理 の両方を1枚のシートに集約 できます。

可変型時間軸の仕組み

可変型の時間軸は、 シリアル値 (日時を扱うExcel固有の数値)の数値計算を軸にして実装します。

  1. 設定した時間単位に応じて、シリアル値の間隔(1コマあたりの加算量)を変える。間隔が「月単位」以上の場合は、月ごとに日数が異なっているが、確実に1月分を跨ぐように補正項を入れる。
  2. 表示用に年・月・日・曜日・時間の各行を用意し、シリアル値からTEXT関数でそれぞれの表示に変換する。
    • 時間単位ごとの「シリアル値の間隔」と「各行の表示形式コード」('yy、m、d、aaa、h、非表示用の;;;)は、マスタテーブルとしてあらかじめ定義しておく。

表示形式コードを直接参照する設計にすることで、IF関数などの分岐を挟まずに、時間軸の見た目を動的に切り替えられます。非表示にするときは表示形式コード;;;を設定するだけです。

「月単位」設定の場合の補正

月の間隔を厳密に計算するには本来EDATE関数が必要です(1月あたりの日数は、月によって28〜31日とバラバラなため)。
しかしEDATE関数を使うと、IF関数による条件分岐などで数式が長くなってしまうため、今回は使っていません。

設定する時間単位が「月単位」以上の場合に、時間軸の最初の日付が月初・月末付近にならないように(15日付近になるように)シリアル値の補正を行っています。具体的には

=ROUND((15 - DAY($C$3)) * $C$5 / 500, 0)*15
excel

の値をシリアル値に加算しています($C$3:開始日、$C$5:時間単位)。

  • (15 - DAY($C$3)):開始日の日付(年・月と時間の値は無視)が「15からどれだけずれているか」を示す。-16(31日のとき)~+14(1日のとき)の値になる。
  • * $C$5 / 500:$C$5(時間単位)の大きさに連動させる調整
    • $C$5の値が小さいとき(例:1)、値はほぼゼロ(-16×1/500=-0.032~14×1/500=0.028)になる
    • $C$5の値が大きいとき(例:30)、日付に応じて約-1~1の値になる
      • 上旬のときの値が約-1(-16×30/500=-0.96)
      • 中旬のときの値が約0(0×30/500=0)
      • 下旬のときの値が約+1(14×30/500=+0.84)
  • ROUND(..., 0):四捨五入で整数値に丸め、時刻が重要になるとき(時間単位$C$5が小さいとき)に影響がでないようにする。

(参考)シリアル値とは

吉峰
吉峰

シリアル値の仕組みがわかると、可変型ガントチャートの数式の意味が理解しやすくなります。

  • シリアル値は、Excel内部で「1900年1月1日」を1とし、経過した日数・時間を数値で表したものです(例:1900/1/1 0:00 = 1、1900/1/1 12:00 = 1.5)。
  • 整数部分が「日付(日)」、小数部分が「時間」を表します(例:1時間 = 1/24 = 0.041666...、30分 = 1/24/2 = 0.020833...)。
  • シリアル値は数値なので、加算処理(+$C$5)や開始日・終了日の大小比較判定($C9<=J$1)を単純な足し算・不等式だけで行えます。

「2026/10/01 09:00」のような表示は文字列に見えますが、裏側ではシリアル値という「数値」として扱われます。表示形式を「数値」に切り替えたときの表示がシリアル値です。

作成手順|月・週・時間単位に対応させる4工程

時間単位を可変にしたガントチャートの作成手順は、以下の4つです。

  • 工程1 時間単位マスタの作成
  • 工程2 ガントチャートシートへの値・数式記入
  • 工程3 条件付き書式によるバーの自動描画
  • 工程4 操作性を高めるUIの作成

時間単位マスタを配置する「時間単位」シートと、ガントチャート本体を配置する「ガントチャート」シートの2つを用意します。

工程1:時間単位マスタの作成

「時間単位」シートを作成し、以下のマスタテーブルM_時間単位を作成します。テーブル名が正しければ、テーブルの配置位置(行・列・シート名)は任意で構いません。

1
2
3
4
5
6
吉峰
吉峰

単位 はシリアル値での時間単位(1 = 1日)、つまり「1コマあたりの加算量」を入力しています。365.25は閏月を考慮した1年間の平均日数です。

表示形式コード ;;;(セミコロン3つ)は 空欄表示 の意味です。

工程2:シートへの値・数式入力

「ガントチャート」シートを作成し、下記の通りに値と数式をセルに入力します。

吉峰
吉峰

以下のスプレッドシートの全セルをコピーし、ExcelのA1セルに貼り付けるだけで、すぐに次の工程3へ進めます。

ABCDEFGHIJK
1SN=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3
2
3プロジェクト開始日2025/4/4=IF( $I3=";;;", "", "年")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(年)])=TEXT(J$1, $I3)=TEXT(K$1, $I3)
4時間単位日=IF( $I4=";;;", "", "月")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(月)])=TEXT(J$1, $I4)=TEXT(K$1, $I4)
5時間単位(SN)=XLOOKUP($C$4, M_時間単位[単位スケール],M_時間単位[単位])=IF( $I5=";;;", "", "日")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(日)])=TEXT(J$1, $I5)=TEXT(K$1, $I5)
6日偏り補正=ROUND((15 - DAY($C$3)) * $C$5 / 500, 0)*15=IF( $I6=";;;", "", "曜日")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(曜日)])=TEXT(J$1, $I6)=TEXT(K$1, $I6)
7=IF( $I7=";;;", "", "時")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(時間)])=TEXT(J$1, $I7)=TEXT(K$1, $I7)
8タスク名開始日終了日担当者ステータス
9タスクA2025/4/12025/4/21鈴木未着手=IF(AND($C9<=J$1, J$1<=$D9), 1, "")=IF(AND($C9<=K$1, K$1<=$D9), 1, "")
10タスクB2025/4/212025/5/2鈴木未着手=IF(AND($C10<=J$1, J$1<=$D10), 1, "")=IF(AND($C10<=K$1, K$1<=$D10), 1, "")

シートは「1. タスク情報領域」「2. 時間軸領域(本記事のメイン)」「3. チャート領域」の3つに区分けされます。下記を展開することで、それぞれの詳細が閲覧可能です。

1. タスク情報領域の詳細

タスク情報を縦に並ぶように入力します。タスク名、開始日、終了日は必須項目です。

詳細:» Excelガントチャートの作り方+テンプレート【基本~拡張】

2. 時間軸領域の詳細

本記事のメインとなる、時間単位可変型の時間軸 を作成していきます。

STEP.1

表示する「時間単位」の入力欄を作成

まず、表示する「時間単位」を入力する欄を作ります。たとえば「月単位」で表示したい場合は月を、「週単位」で表示したい場合は週を入力する欄です。入力した「時間単位」を基に、M_時間単位テーブルからシリアル値に変換します。

1
2
3
4
STEP.2

単位切り替えの値を取得

XLOOKUP関数を使い、入力した単位(例:「日」「週」「時間」)に応じた「1コマあたりの加算量」「年・月・日・曜日・時間それぞれの表示形式コード」を取得します。ここでは構造化参照を使って時間単位マスタを参照しています。

1
2
3
4
5
6
7
STEP.3

シリアル値の動的計算

時間軸の開始日時を入力する「プロジェクト開始日」欄を用意し、この値を使って時間軸を作成します。

ABCDEFGHIJ
1SN=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3+$C$6
2
3プロジェクト開始日2025/4/4=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(年)])
4時間単位日=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(月)])
5時間単位(SN)=XLOOKUP($C$4, M_時間単位[単位スケール],M_時間単位[単位])=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(日)])
6日偏り補正=ROUND((15 - DAY($C$3)) * $C$5 / 500, 0)*15=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(曜日)])
7=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(時間)])

時間軸は以下のような等差数列です。

  • 初期値(初項): プロジェクト開始日
  • 加算量(公差): 時間単位

COLUMN関数で「自身が何列目か」を数値化し、等差数列を作り時間軸の基となるシリアル値(SN)を計算します。

STEP.4

時間軸の数値表示

TEXT関数を使ってシリアル値から年・月・日・曜日・時などを表示させます。対応する表示形式を使用することで、それぞれの数値を取得する方法をとります。非表示にする場合は、M_時間単位テーブル中の表示形式コードの欄を;;;(セミコロン3つ)に設定することで、空文字表示が可能です。

ABCDEFGHIJ
1SN=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3+$C$6
2
3プロジェクト開始日2025/4/4=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(年)])=TEXT(J$1, $I3)
4時間単位日=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(月)])=TEXT(J$1, $I4)
5時間単位(SN)=XLOOKUP($C$4, M_時間単位[単位スケール],M_時間単位[単位])=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(日)])=TEXT(J$1, $I5)
6日偏り補正=ROUND((15 - DAY($C$3)) * $C$5 / 500, 0)*15=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(曜日)])=TEXT(K$1, $I5)
7=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(時間)])=TEXT(K$1, $I7)
STEP.5

時間軸を伸ばす

シリアル値と数値表示を設定した関数を右側へオートフィル・コピペで必要な分だけ伸ばします。

ABCDEFGHIJK
1SN=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3+$C$6=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3+$C$6
2
3プロジェクト開始日2025/4/4=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(年)])=TEXT(J$1, $I3)=TEXT(K$1, $I3)
4時間単位日=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(月)])=TEXT(J$1, $I4)=TEXT(K$1, $I4)
5時間単位(SN)=XLOOKUP($C$4, M_時間単位[単位スケール],M_時間単位[単位])=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(日)])=TEXT(J$1, $I5)=TEXT(K$1, $I5)
6日偏り補正=ROUND((15 - DAY($C$3)) * $C$5 / 500, 0)*15=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(曜日)])=TEXT(J$1, $I5)=TEXT(K$1, $I5)
7=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(時間)])=TEXT(J$1, $I6)=TEXT(K$1, $I6)
STEP.6

時間軸のラベル作成

「年」「月」「日」「曜日」「時」 を表示させるラベルを作ります。数値が非表示(表示コード;;;)状態の時は、ラベルも非表示にするようにIF関数を使います。

ABCDEFGHIJK
1SN=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3
2
3プロジェクト開始日2025/4/4=IF( $I3=";;;", "", "年")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(年)])=TEXT(J$1, $I3)=TEXT(K$1, $I3)
4時間単位日=IF( $I4=";;;", "", "月")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(月)])=TEXT(J$1, $I4)=TEXT(K$1, $I4)
5時間単位(SN)=XLOOKUP($C$4, M_時間単位[単位スケール],M_時間単位[単位])=IF( $I5=";;;", "", "日")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(日)])=TEXT(J$1, $I5)=TEXT(K$1, $I5)
6日偏り補正=ROUND((15 - DAY($C$3)) * $C$5 / 500, 0)*15=IF( $I6=";;;", "", "曜日")", "=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(曜日)])=TEXT(J$1, $I5)=TEXT(K$1, $I5)
7=IF( $I7=";;;", "", "時")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(時間)])=TEXT(J$1, $I6)=TEXT(K$1, $I6)
3. チャート領域の詳細

タスク情報領域の「開始日」「終了日」と時間軸領域のシリアル値を使い、IF関数で塗りつぶすセルを判定します。塗りつぶす場合には1、そうでない場合は空になります。

詳細:» Excelガントチャートの作り方+テンプレート【基本~拡張】

工程3:条件付き書式によるバー描画

チャート領域には、バーを表示するセルに1を出力する数式が入力されています。これをもとに条件付き書式でバーを自動描画します。

条件付き書式の設定

  • ルール : セルが空白でない(指定の値を含むセルだけ > 空白なし)
  • 書式:
    • [塗りつぶし] > [背景色] > 色なし以外
    • [表示形式] > [ユーザー定義] > ;;;
  • 適用先:=$J$9:$CA$13など(チャート領域のセル範囲に合わせて適宜変更)

詳細:» Excelガントチャートの作り方+テンプレート【基本~拡張】

見た目を整える

適宜、以下の設定をすると見た目が整います。

  • セル幅を調整する
  • 罫線を引く
  • 時間軸で隣と重複する値を消す
  • 土日のグレーアウト

チャートを見る上で不要となる列や行(I列、1行など)は非表示にしても問題ありません。

工程4-1 操作性を高めるUI作成|単位切り替えリスト

時間単位の切り替え用にドロップダウン(プルダウン)リストを設定しておくと便利です。

[データ]タブ > [データの入力規則] から以下を設定します。

  • 入力値の種類: リスト
  • ドロップダウンリストから選択する: チェック
  • 元の値:=時間単位!$A$2:$A$6(M_時間単位テーブル内の月 週 日 半日 時間を選択)

工程4-2 操作性を高めるUI作成|広い時間軸対応

時間軸の範囲が広い場合、遠くまでスクロールすることになり見づらくなります。とくに「月・週」のような長い時間スケールのタスクと「日・時間」のような短い期間のタスクが混在している場合には、広い時間軸が必要になりがちです。たとえば1~2月のタスクが存在する場合、細かいタスクを見るために表示単位を「時間」に切り替えると、全体を表示させるのに「24時間×60日=1440時間」分の列が必要になります。

広い時間軸に対応するためには、主に2つの方法があります。

  • 方法1: 事前に広範囲に数式・条件付き書式を設定しておき、ウィンドウ枠の固定を設定する
    • デメリット: ファイル容量が大きくなる
  • 方法2: カスタムスクロールバーを作成する
    • デメリット: 動作が重く、やや操作性が悪い

方法1:広範囲に数式・条件付き書式設定+ウィンドウ枠の固定

余分に数式・条件付き書式を横に広げて設定しておき、タスク情報などは [表示] タブ >[ウィンドウ枠の固定] によって常に表示されるようにするのがシンプルな方法です。

数式や条件付き書式を設定するセルが多くなるため、ファイル容量が大きくなりがちなのが欠点です。

方法2:カスタムスクロールバーの作成

横スクロール操作を疑似的に行うためのスクロールバーを自作するという手があります。数式や条件付き書式は1画面分のセルのみに設定し、カスタムスクロールバーによってセルの出力値自体が変わるようにします。

この方法は、スクロール時の動作がカクつきやすく操作性がやや良くないのが難点です。

STEP.1

スクロール量の入力セルを用意する

時間軸のスクロール量(オフセット量)を入力するセルを用意します。

ABCDEFGHIJK
1SN=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3=$C$5*(COLUMN()-COLUMN($J:$J)) + $C$3
2スクロール量0
3プロジェクト開始日2025/4/4=IF( $I3=";;;", "", "年")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(年)])=TEXT(J$1, $I3)=TEXT(K$1, $I3)
4時間単位日=IF( $I4=";;;", "", "月")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(月)])=TEXT(J$1, $I4)=TEXT(K$1, $I4)
5時間単位(SN)=XLOOKUP($C$4, M_時間単位[単位スケール],M_時間単位[単位])=IF( $I5=";;;", "", "日")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(日)])=TEXT(J$1, $I5)=TEXT(K$1, $I5)
STEP.2

時間軸のSNの数式を修正する

入力されたスクロール量に従って時間軸がずれるように数式を修正します。例えばスクロール量が1のときは、時間軸のスタートが1ずれるようにします。

ABCDEFGHIJK
1SN=$C$5*(COLUMN()-COLUMN($J:$J)+$I$2) + $C$3 + $C$6=$C$5*(COLUMN()-COLUMN($J:$J)+$I$2) + $C$3 + $C$6
2スクロール量0
3プロジェクト開始日2025/4/4=IF( $I3=";;;", "", "年")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(年)])=TEXT(J$1, $I3)=TEXT(K$1, $I3)
4時間単位日=IF( $I4=";;;", "", "月")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(月)])=TEXT(J$1, $I4)=TEXT(K$1, $I4)
5時間単位(SN)=XLOOKUP($C$4, M_時間単位[単位スケール],M_時間単位[単位])=IF( $I5=";;;", "", "日")=XLOOKUP($C$4, M_時間単位[単位スケール], M_時間単位[表示(日)])=TEXT(J$1, $I5)=TEXT(K$1, $I5)
STEP.3

スクロールバーを配置する

[開発]タブ > [挿入] > [スクロールバー(フォームコントロール)]を選択し、横長のスクロールバーを配置します。Altキーを押していると、セルの角に合わせてきれいに配置できます。配置後も、右クリックで位置・サイズ変更が可能です。

STEP.4

スクロールバーとセル値をリンクする

配置したスクロールバーを右クリック > [コントロールの書式設定] > [コントロール] タブで [リンクするセル] に、1で作成した「スクロール量の入力セル」(例:II2)を設定します。

テンプレート|完成品Excelファイルの無料ダウンロード

上記の手順で作成できる完成品ファイルを配布しています。そのままテンプレートとしても利用可能です。

2種類ありますが、それぞれ以下となっています。

  • カスタムスクロールバーなし: 工程4-2の方法1(広範囲に数式・条件付き書式設定+ウィンドウ枠の固定)を実装したガントチャート
  • カスタムスクロールバーあり: 工程4-2の方法2(カスタムスクロールバーの作成)を実装したガントチャート
212KB
02b_時間可変ガントチャート.xlsx

テンプレートとしてそのまま使える時間可変ガントチャート(カスタムスクロールバーなし)です。

39KB
03b_時間可変ガントチャート(カスタムスクロールバー).xlsx

テンプレートとしてそのまま使える時間可変ガントチャート(カスタムスクロールバーあり)です。

使い方と活用例|ガントチャートの運用フロー

時間単位の切り替え方法

作成したガントチャートツールは、以下の手順で操作します。

「時間単位」項目の値(C4セル)のドロップダウンメニューから、表示したい時間単位(「週」や「時間」など)を選択します。すると、表示形式コードが直接差し替わり、表示が自動的に切り替わります。

運用例:長期計画と当日管理の併用

「大枠の計画」と「当日の作業」で表示単位を使い分けると、1つのファイルで長期管理と当日管理の両方 がまかなえます。時間可変型ガントチャートを以下のようにして運用していくと便利です。

  • タスクの設定:
    • 大まかな・大目標を持つタスク → 長期間(月・週単位など)に設定する。
    • 細かい・具体的なタスク → 短期間(日・時間単位など)に設定する。
  • 時間軸の切り替え: 全体像を確認するときには「月・週」単位表示を使用し、作業の前後では「日・時間」単位表示に切り替えてタスクを消化していく。

FAQ|Excelガントチャートのよくある質問

  • Q1.月単位の計算にはEDATE関数が必要では? 1つの関数で月・日・時間の単位をまとめて切り替えない?

    • 1つの関数(数式)だけで、月単位と日・時間単位の増加ロジックを完全に統一することはできません。月は1月あたりの日数が28〜31日と一定でないため、本来はEDATE関数による計算が必要です。ただし本記事の設計では、月単位表示のとき「日」以下の情報を表示に使わないため、厳密に計算しなくても見た目上のガントチャートとしては問題なく成立します。そのため、月単位のときも他の単位と同じく「30.44を加算する」という単純な処理で統一しています。
  • Q2.2026/9/25のように表示形式でガントチャートの時間軸に使いたい。でも横幅が長くて見にくいが見やすくできない?

    • 斜め表示にすることで、比較的見やすく、横幅を狭くできます。[ホーム]タブ > [方向] > [左回りに回転] を選択で45度傾くので、あとは列幅を狭くすれば設定可能です。

      ただしyyyy/m/d表示形式のように、1セルに複数の単位を並べた場合は「隣と同じ値(重複)を非表示」にするのが簡単ではないので、本記事ではこの方法を使用していません。

まとめ|Excelガントチャートでタスク管理を効率化しよう

Excelのガントチャートは、XLOOKUP関数・COLUMN関数・TEXT関数 で、マクロ/VBAを使わずに、月・週・時間単位を自由に切り替えられる ようになります。

Excelでガントチャートを作成する方法の基本や、実装できる機能(見やすく色付け、WBS対応など)については次の記事にまとめています。

» Excelガントチャートの作り方+テンプレート【基本~拡張】

Excelでの複雑な設定や、複数人での同時編集に限界を感じた場合は、専用のプロジェクト管理ツールの活用も検討してみてください。