本記事ではExcel(エクセル)
参考:» Excelガントチャートの作り方+テンプレート【基本~拡張】
【内容】
- 「年・月・週・日・時間」
を切り替えられる可変型ガントチャートの設計 - XLOOKUP関数・COLUMN関数・TEXT関数・条件付き書式を組み合わせた実装方法
「年」

テンプレートとして使用可能な完成品は、
Excelのバージョン
本記事は、
目次
ガントチャートの横軸(時間軸)
固定型と可変型の違い
-
固定型
-
時間軸の時間単位(差分)
が一定のガントチャート。 シンプルな数式のみで実装できる。 -
「日単位」
「時間単位」 で横軸を固定すると、 長期プロジェクトでは横スクロールの手間が増え、 全体を鳥瞰しづらい。 逆に「月単位」 に固定すると、 当日の分・時間単位の精細な進捗管理がしづらい。 時間単位 数式例 実装例 月単位 =EDATE(B1,1) 週単位 =B1+7 日単位 =B1+1 時間単位 =B1+TIME(1,0,0)
-
-
可変型
- 時間軸の時間単位(差分)
を変えられるようにし、 この値に従って動的に時間軸を生成するガントチャート。 - 1つのファイル・単一のシート上で、
月単位の大枠スケジュール確認から、 日・時間単位のタスク管理までをシームレスに切り替えられる。
- 時間軸の時間単位(差分)

可変型にすることで、
可変型時間軸の仕組み
可変型の時間軸は、
- 設定した時間単位に応じて、
シリアル値の間隔(1コマあたりの加算量) を変える。 間隔が「月単位」 以上の場合は、 月ごとに日数が異なっているが、 確実に1月分を跨ぐように補正項を入れる。 - 表示用に年・月・日・曜日・時間の各行を用意し、
シリアル値からTEXT関数でそれぞれの表示に変換する。 - 時間単位ごとの「シリアル値の間隔」
と「各行の表示形式コード」 ('yy、 m、 d、 aaa、 h、 非表示用の;;;) は、 マスタテーブルとしてあらかじめ定義しておく。
- 時間単位ごとの「シリアル値の間隔」
表示形式コードを直接参照する設計にすることで、
「月単位」
月の間隔を厳密に計算するには本来EDATE関数が必要です(1月あたりの日数は、
しかしEDATE関数を使うと、
設定する時間単位が「月単位」
=ROUND((15 - DAY($C$3)) * $C$5 / 500, 0)*15の値をシリアル値に加算しています($C$3:開始日、
- (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)
- 上旬のときの値が約-1(-16×30/500=-0.96)
- $C$5の値が小さいとき(例:1)
- 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」
時間単位を可変にしたガントチャートの作成手順は、
- 工程1 時間単位マスタの作成
- 工程2 ガントチャートシートへの値・数式記入
- 工程3 条件付き書式によるバーの自動描画
- 工程4 操作性を高めるUIの作成
時間単位マスタを配置する「時間単位」
工程1:時間単位マスタの作成
「時間単位」

単位 はシリアル値での時間単位(1 = 1日)
表示形式コード ;;;(セミコロン3つ)
工程2:シートへの値・数式入力
「ガントチャート」

以下のスプレッドシートの全セルをコピーし、
シートは「1. タスク情報領域」
1. タスク情報領域の詳細
タスク情報を縦に並ぶように入力します。
2. 時間軸領域の詳細
本記事のメインとなる、
表示する「時間単位」
まず、
単位切り替えの値を取得
XLOOKUP関数を使い、
シリアル値の動的計算
時間軸の開始日時を入力する「プロジェクト開始日」
時間軸は以下のような等差数列です。
- 初期値(初項)
: プロジェクト開始日 - 加算量(公差)
: 時間単位
COLUMN関数で「自身が何列目か」
時間軸の数値表示
TEXT関数を使ってシリアル値から年・月・日・曜日・時などを表示させます。
時間軸を伸ばす
シリアル値と数値表示を設定した関数を右側へオートフィル・コピペで必要な分だけ伸ばします。
時間軸のラベル作成
「年」
3. チャート領域の詳細
タスク情報領域の「開始日」
工程3:条件付き書式によるバー描画
チャート領域には、
条件付き書式の設定
- ルール : セルが空白でない(指定の値を含むセルだけ > 空白なし)
- 書式:
- [塗りつぶし] > [背景色] > 色なし以外
- [表示形式] > [ユーザー定義] > ;;;
- 適用先:=$J$9:$CA$13など(チャート領域のセル範囲に合わせて適宜変更)
詳細:» Excelガントチャートの作り方+テンプレート【基本~拡張】
見た目を整える
適宜、
- セル幅を調整する
- 罫線を引く
- 時間軸で隣と重複する値を消す
- 土日のグレーアウト
チャートを見る上で不要となる列や行(I列、
工程4-1 操作性を高めるUI作成|単位切り替えリスト
時間単位の切り替え用にドロップダウン(プルダウン)
[データ]タブ > [データの入力規則] から以下を設定します。
- 入力値の種類: リスト
- ドロップダウンリストから選択する: チェック
- 元の値:=時間単位!$A$2:$A$6(M_時間単位テーブル内の月 週 日 半日 時間を選択)
工程4-2 操作性を高めるUI作成|広い時間軸対応
時間軸の範囲が広い場合、
広い時間軸に対応するためには、
- 方法1: 事前に広範囲に数式・条件付き書式を設定しておき、
ウィンドウ枠の固定を設定する - デメリット: ファイル容量が大きくなる
- 方法2: カスタムスクロールバーを作成する
- デメリット: 動作が重く、
やや操作性が悪い
- デメリット: 動作が重く、
方法1:広範囲に数式・条件付き書式設定+ウィンドウ枠の固定
余分に数式・条件付き書式を横に広げて設定しておき、
数式や条件付き書式を設定するセルが多くなるため、
方法2:カスタムスクロールバーの作成
横スクロール操作を疑似的に行うためのスクロールバーを自作するという手があります。
この方法は、
スクロール量の入力セルを用意する
時間軸のスクロール量(オフセット量)
時間軸のSNの数式を修正する
入力されたスクロール量に従って時間軸がずれるように数式を修正します。
スクロールバーを配置する
[開発]タブ > [挿入] > [スクロールバー(フォームコントロール)
スクロールバーとセル値をリンクする
配置したスクロールバーを右クリック > [コントロールの書式設定] > [コントロール] タブで [リンクするセル] に、
上記の手順で作成できる完成品ファイルを配布しています。
2種類ありますが、
- カスタムスクロールバーなし: 工程4-2の方法1(広範囲に数式・条件付き書式設定+ウィンドウ枠の固定)
を実装したガントチャート - カスタムスクロールバーあり: 工程4-2の方法2(カスタムスクロールバーの作成)
を実装したガントチャート
テンプレートとしてそのまま使える時間可変ガントチャート(カスタムスクロールバーなし)です。
テンプレートとしてそのまま使える時間可変ガントチャート(カスタムスクロールバーあり)です。
時間単位の切り替え方法
作成したガントチャートツールは、
「時間単位」
運用例:長期計画と当日管理の併用
「大枠の計画」
- タスクの設定:
- 大まかな・大目標を持つタスク → 長期間(月・週単位など)
に設定する。 - 細かい・具体的なタスク → 短期間(日・時間単位など)
に設定する。
- 大まかな・大目標を持つタスク → 長期間(月・週単位など)
- 時間軸の切り替え: 全体像を確認するときには「月・週」
単位表示を使用し、 作業の前後では「日・時間」 単位表示に切り替えてタスクを消化していく。
-
Q1.月単位の計算にはEDATE関数が必要では? 1つの関数で月・日・時間の単位をまとめて切り替えない?
- 1つの関数(数式)
だけで、 月単位と日・時間単位の増加ロジックを完全に統一することはできません。 月は1月あたりの日数が28〜31日と一定でないため、 本来はEDATE関数による計算が必要です。 ただし本記事の設計では、 月単位表示のとき「日」 以下の情報を表示に使わないため、 厳密に計算しなくても見た目上のガントチャートとしては問題なく成立します。 そのため、 月単位のときも他の単位と同じく「30.44を加算する」 という単純な処理で統一しています。
- 1つの関数(数式)
-
Q2.2026/9/25のように表示形式でガントチャートの時間軸に使いたい。
でも横幅が長くて見にくいが見やすくできない? -
斜め表示にすることで、
比較的見やすく、 横幅を狭くできます。 [ホーム]タブ > [方向] > [左回りに回転] を選択で45度傾くので、 あとは列幅を狭くすれば設定可能です。 ただしyyyy/m/d表示形式のように、
1セルに複数の単位を並べた場合は「隣と同じ値(重複) を非表示」 にするのが簡単ではないので、 本記事ではこの方法を使用していません。
-
Excelのガントチャートは、
Excelでガントチャートを作成する方法の基本や、
» Excelガントチャートの作り方+テンプレート【基本~拡張】
Excelでの複雑な設定や、
