SkillStack Lab運営者のスタックです。
Notionでプロジェクトやタスクを管理していると、「全体の何%まで終わっているのか」を進捗バーで見えるようにしたくなりますよね。
Notionでは、完了したタスクの割合を自動計算し、バーやリングとして表示できます。
おすすめは、進捗率を人が「50%」「80%」と入力する方法ではなく、完了したタスク数から自動計算する方法です。プロジェクトDBとタスクDBをリレーションでつなぎ、ロールアップで「完了」の割合を集計すれば、タスクを完了にするだけで進捗率も更新できます。
私自身、Notionに限らずチームのタスク管理では「進捗率を人が入力する方式」を使わなくなりました。
担当者によって50%の意味が違い、結局「とりあえず50%」という数字が並んで実態を把握しにくくなったからです。
この記事では、Notionの進捗バーを作る基本から、チェックボックス、ステータス、リレーション・ロールアップ、数式を使った自動計算まで順番に解説します。

- Notionで進捗バー・リングを表示する考え方
- チェックボックスから進捗率を計算する方法
- ステータスとロールアップで自動計算する方法
- プロジェクトDBとタスクDBを連携する方法
- 現在のNotion数式で進捗率を計算する方法
- 進捗率を運用するときの注意点
Notionの進捗率は3つの方法で作れる
Notionで進捗率を表示する方法は、管理しているタスクの構造によって変わります。
| 方法 | 向いているケース | 難易度 |
|---|---|---|
| チェックボックス+数式 | 項目数が固定されたチェックリスト | 低 |
| リレーション+ロールアップ | プロジェクトと複数タスクを管理 | 中 |
| リレーション+数式 | 独自条件で完了率を計算したい | 中〜高 |
仕事のプロジェクト管理なら、私はリレーション+ロールアップから始めることをおすすめします。
Notion公式のProjects・Tasksの考え方とも近く、タスクのステータスを更新するだけでプロジェクト全体の完了率を自動計算できるからです。
一番おすすめ|ステータスとロールアップで進捗率を自動計算
最も実務で使いやすいのが、「プロジェクトDB」と「タスクDB」を分ける方法です。
たとえば、次のような構成にします。
| プロジェクトDB | タスクDB |
|---|---|
| 勤怠システム導入 | 要件整理 |
| 勤怠システム導入 | 初期設定 |
| 勤怠システム導入 | テスト |
| 勤怠システム導入 | 社員説明 |
| 勤怠システム導入 | 本番開始 |
5件のうち3件が完了すれば、プロジェクトの進捗率は60%です。
これをNotionに自動計算させます。
手順1|タスクDBにステータスを作る
まずタスクDBに「ステータス」プロパティを用意します。
Notionのステータスには、大きく次の3カテゴリがあります。
- 未着手(To do)
- 進行中(In progress)
- 完了(Complete)
必要なら「確認待ち」「レビュー中」などのサブステータスを追加できます。
ただし、進捗率を計算するときは最終的にCompleteカテゴリへ入ったタスクを完了として数える方法がシンプルです。
手順2|プロジェクトDBとタスクDBをリレーションでつなぐ
次に、タスクがどのプロジェクトに属しているのかをNotionへ教えます。
- プロジェクトDBに新しいプロパティを追加する
- 種類から「リレーション」を選ぶ
- 接続先としてタスクDBを選ぶ
- 各プロジェクトへ該当するタスクを紐付ける
リレーションは、2つのデータベースをつなぐためのプロパティです。
手順3|ロールアップで完了タスクの割合を計算する
プロジェクトDBへ「ロールアップ」プロパティを追加します。
- プロジェクトDBにロールアップを追加する
- リレーションに「タスク」を指定する
- 参照するプロパティに「ステータス」を指定する
- 集計方法で「Percent per group」を選ぶ
- 完了に相当する「Complete」を選ぶ
これで、関連タスクのうち何%が完了しているかを自動計算できます。
タスクをCompleteへ変更するたびに、プロジェクト側の進捗率も更新されます。
進捗率は、パーセントだけでなくバーやリングとして表示することもできます。
Notion公式でも、関連タスクの完了率をロールアップし、プロジェクト側で進捗バーやリングとして表示する方法が案内されています。
進捗率を「未着手0%・進行中50%・完了100%」にしない理由
Notionの数式を使えば、「未着手=0%」「進行中=50%」「完了=100%」と設定することもできます。
ただし、私はチームのプロジェクト管理ではこの方法を基本的に使いません。
同じ問題は、「進行中なら自動的に50%」としても起こります。
10分で終わるタスクも10日かかるタスクも、進行中へ変えた瞬間に50%になってしまうからです。
プロジェクト全体の進捗を見るなら、「何%進んだと思うか」ではなく「全タスクのうち何件が完了したか」の方が判断基準を統一しやすくなります。
スタック進捗率を精密に見せることより、「何が終わっていて、何が残っているか」が全員に同じ意味で伝わることを重視しています。
固定されたチェックリストならチェックボックス+数式でも作れる
毎回同じ工程を繰り返す業務なら、複数のチェックボックスから進捗率を出す方法も使えます。
たとえば、次の4工程が必ず存在するとします。
- 要件定義
- 設定
- テスト
- 公開
それぞれをチェックボックスプロパティにした場合、数式プロパティへ次の式を設定できます。
(
toNumber(prop("要件定義")) +
toNumber(prop("設定")) +
toNumber(prop("テスト")) +
toNumber(prop("公開"))
) / 4
Notionの数式では、チェックボックスはBoolean型として扱われます。toNumber(true)は1になるため、チェック済みの個数を数値へ変換して全体数で割っています。
| 完了数 | 計算結果 | 進捗率 |
|---|---|---|
| 0 / 4 | 0 | 0% |
| 1 / 4 | 0.25 | 25% |
| 2 / 4 | 0.5 | 50% |
| 3 / 4 | 0.75 | 75% |
| 4 / 4 | 1 | 100% |
数式の結果をパーセント形式で表示すれば、進捗率として確認できます。
この方法は工程数が固定されたチェックリスト向けです。タスクが毎回増減するプロジェクトなら、チェックボックスを列として増やすより、タスクDBを分けてリレーション・ロールアップで管理する方が拡張しやすくなります。
現在のNotion数式なら関連タスクから直接進捗率を計算できる
より柔軟な条件で進捗率を計算したい場合は、数式プロパティを使えます。
現在のNotion数式では、リレーション先のデータをmap()やfilter()で扱えるため、以前のように必ずロールアップを一つ挟まなくても計算できます。
たとえば、プロジェクトDBの「タスク」というリレーションに複数のタスクが紐付き、そのタスクDBに「ステータス」があるとします。
ステータスが「完了」のタスク数から進捗率を計算する一例は次の通りです。
lets(
total, prop("タスク").length(),
done, prop("タスク").map(current.prop("ステータス")).filter(current == "完了").length(),
if(total == 0, 0, done / total)
)
この式では、
total=関連する全タスク数done=「完了」になっているタスク数done / total=完了率
を計算しています。
タスクが0件の場合は0を返すようにしているため、0除算も避けられます。
ステータス名は、自分のデータベースで実際に使っている名称へ変更してください。
Notion公式でも、現在の数式では関連タスクをmap()・filter()・length()で集計して完了率を計算する例が公開されています。
ロールアップと数式はどちらを使うべき?
| 方法 | おすすめする人 |
|---|---|
| ロールアップ | まず簡単に完了率を出したい |
| 数式 | 完了条件を細かく変えたい |
単純に「完了タスク数 ÷ 全タスク数」でよければ、私はロールアップをおすすめします。
たとえば、「保留は母数から除く」「特定種類のタスクだけ数える」など独自ルールが必要になったときに数式へ進めば十分です。
バーとリングはどちらを使う?
Notionではプロジェクトの完了率を、進捗バー・リング・パーセントなどで表示できます。
| 表示 | 向いている場面 |
|---|---|
| バー | 表形式で複数プロジェクトを横並び比較したい |
| リング | カードやダッシュボードでコンパクトに見せたい |
| %表示 | 具体的な数値を最優先したい |
どれを選んでも元になる計算は同じです。
「見栄えがいいから」という理由で複雑な数式を増やすより、自分やチームが一番判断しやすい表示を選びましょう。
サブアイテムを使って大きなタスクを分解する
一つのタスクをさらに細かく分けたい場合は、Notionの「サブアイテム」を使えます。
たとえば「新システム導入」という大きな項目の下へ、
- 要件整理
- 初期設定
- テスト
- 社員説明
といった子タスクを作れます。
現在のNotionでは、データベース設定からサブアイテムを有効にでき、テーブル・リスト・タイムラインなどで親子関係を表示できます。
サブアイテムはタスクの構造化に便利ですが、サブアイテムを使っただけで自動的に任意の進捗率が完成するわけではありません。
完了率まで表示したい場合は、親子関係を参照したロールアップや数式と組み合わせます。
進捗率のためにオートメーションを使う必要はほとんどない
Notionには「条件が変わったら別のプロパティを変更する」といったデータベースオートメーションもあります。
ただし、単純な進捗率計算だけなら、私はオートメーションを使う必要はないと考えています。
ロールアップや数式なら、元データの変更に応じて計算結果を表示できるためです。
オートメーションは、たとえば次のような別の動作も自動化したい場合に検討します。
- ステータス変更時に担当者を設定する
- 条件を満たしたら別のプロパティを変更する
- Slackへ通知する
2026年8月時点では、一般的なデータベースオートメーションの作成・編集は有料プラン向けです。無料プランには例外的に利用できる機能もあるため、導入前に現在の公式条件を確認してください。
Notionの進捗率が合わないときのチェックポイント
タスクがプロジェクトに紐付いていない
ロールアップは、リレーションで関連付けられたデータだけを集計します。
完了したのに進捗率が上がらない場合は、そのタスクが正しいプロジェクトへ紐付いているか確認してください。
「完了」のカテゴリが違う
Notionのステータスでは、表示名だけでなく「To do」「In progress」「Complete」という大分類があります。
自分で「レビュー完了」などのステータスを作った場合、そのステータスがどのカテゴリに属しているかも確認しましょう。
タスク数が0件なのに数式で割っている
数式で独自に「完了数 ÷ 全体数」を計算する場合は、全体数が0件になるケースも考慮します。
先ほど紹介した数式では、
if(total == 0, 0, done / total)
として、タスクがないときは0を返しています。
小数点が細かすぎる
独自計算で小数点を丸めたい場合は、round()を利用できます。
現在のNotionでは、round()は小数点以下の桁数も指定できます。
round(0.666666, 2)
この場合は0.67になります。
Notionの進捗率でよくある質問
まとめ|進捗率は手入力より完了タスクから自動計算する
Notionでは、チェックボックス・ステータス・リレーション・ロールアップ・数式を組み合わせて進捗率を表示できます。
ただし、最初から複雑な数式を作る必要はありません。
- 固定チェックリスト → チェックボックス+数式
- 通常のプロジェクト → リレーション+ロールアップ
- 特殊な完了条件 → リレーション+数式
という順番で考えるとシンプルです。
Notionのロールアップや数式、表全体の集計方法も詳しく知りたい方は、次の記事で基本から解説しています。








