残業を減らす!Officeテクニック
プロジェクトの掛け持ちで負担が大きすぎる人を探せ! Excelで業務の偏りを見つける方法
2026年11月16日 06:55
以前の記事では、Power Pivotのメジャーを使い、社員ごとの参加プロジェクト数や予定工数、プロジェクト名を一覧表示しました。今回は、その集計結果をさらに活用してみます。
管理者の立場では、特定のメンバーに業務が集中していないかを確認して、割り振りを見直すことがあります。その際、メンバーの参加しているプロジェクトの数だけでなく、どの案件にどれくらいの工数を割り当てているのか、どのような役割で関わっているのかも把握しておきたいところです。
各社員が参加しているプロジェクトのうち、工数の多いものだけを抽出したり、主担当や副担当として参加しているプロジェクトの割合を計算したりする場合も、DAX関数を利用します。具体的な使い方を見ていきましょう。
予定工数が多いプロジェクトを上位3件だけ表示する
担当するプロジェクト数が多くても、すべての案件に同じだけの工数が割り当てられているとは限りません。実際には特定のプロジェクトが工数の大半を占めていることもあります。社員ごとに予定工数の多いプロジェクトを上位3件取り出してみましょう。
TOPN関数を使ったメジャーを作成します。TOPN関数は、指定したテーブルから、数値の大きい順、あるいは小さい順に、指定した件数のデータを抽出します。入力する数式は以下の通りです。
=VAR TopProjects =
TOPN(
3,
VALUES('プロジェクト一覧'[プロジェクト名]),
CALCULATE(SUM('プロジェクト一覧'[予定工数(人日)])),
DESC
)
RETURN
CONCATENATEX(
TopProjects,
'プロジェクト一覧'[プロジェクト名],
"、",
CALCULATE(SUM('プロジェクト一覧'[予定工数(人日)])),
DESC
)
数式の処理は大きく2つに分かれています。冒頭にある「VAR」は、変数を定義するためのキーワードで、TOPN関数で抽出した結果を「TopProjects」(名前は任意)という変数に格納しています。
VALUES関数は、重複しないプロジェクト名の一覧を取得するためのものです。第3引数では、プロジェクトごとの予定工数を計算しています。CALCULATE関数を利用することで、VALUES関数で取り出したプロジェクトごとに[予定工数(人日)]を合計できます。
続く「DESC」は降順(大きい順)を意味し、省略しても同じ結果になりますが、並べ替えの方向を明示するために指定しています。
「RETURN」は、変数を使って最終的な計算結果を返すためのキーワードです。CONCATENATEX関数では、変数「TopProjects」に格納されたプロジェクト名を「、」でつないでいます。第4引数以降では、予定工数を基準に「DESC」(降順)を指定し、工数の多い順に並べます。
ここでは、メジャー名を「工数上位3プロジェクト」とします。作成したメジャーをピボットテーブルの[値]に追加すると、メンバーごとに工数の大きいプロジェクトを確認できます。社員ごとに比較したいので、[行]には[氏名]を追加します。
なお、この結果は社員ごとに予定工数の多いプロジェクトを抽出したもので、社員同士の工数の多い・少ないを示すものではありません。同じプロジェクトに参加していても、社員によって割り当てられた工数は異なります。
例えば、[行]に[予定工数(人日)]を追加すると、工数別の内訳を確認できます。中村さんと田中さんが参加している「新市場開拓」プロジェクトには、それぞれ36人日、58人日が割り当てられています。
主担当・副担当・メンバーの割合を求める
プロジェクトでの役割にも注目してみましょう。主担当や副担当として関わるのと、メンバーとして参加するのでは、求められる役割や責任が異なります。あるプロジェクトでは主担当、別のプロジェクトでは副担当やメンバーということもあるでしょう。
例えば、5件のプロジェクトに参加している社員が、そのうち3件で主担当を務めている場合、主担当の割合は60%になります。同じ5件でも、主担当が1件なら20%です。
計算としては「主担当の参加プロジェクト数÷参加プロジェクト数」です。DAX関数の数式で表すと、次のようになります。
=DIVIDE(
CALCULATE(
COUNTROWS('プロジェクト一覧'),
'プロジェクト一覧'[役割]="主担当"
) + 0,
COUNTROWS('プロジェクト一覧'),
0
)
CALCULATE関数で[役割]が「主担当」の参加件数を求め、DIVIDE関数で社員の参加件数全体に対する割合を計算します。DIVIDE関数の第3引数の「0」は、分母が「0」または空白値(BLANK)の場合に返す値です。
なお、COUNTROWS関数は指定したテーブルの行数を数えます。今回の表は1行が1人の社員による1件のプロジェクトへの参加を表しており、ピボットテーブルでは社員ごとに絞り込まれるため、参加プロジェクト数を求められます。
また、COUNTROWS関数は、該当するデータがない場合に空白値(BLANK)を返します。ここでは「+ 0」を付けて空白値を「0」に変換し、該当する役割のプロジェクトがない場合に「0%」と表示されるようにしています。
[役割]の条件を変更すれば、「副担当」「メンバー」の割合を求められます。それぞれ、「主担当割合」「副担当割合」「メンバー割合」というメジャー名で登録しておきます。
[プロジェクト名](カウント)と作成した3つのメジャーをピボットテーブルの[値]に追加すると、社員ごとの参加件数と役割別の割合を並べて確認できます。
同じ5件のプロジェクトに参加していても、主担当が60%の社員と20%の社員では、担当している役割の内訳が異なります。主担当の割合が高いメンバーについては、複数の案件で責任が集中していないか確認する判断材料になるでしょう。
今回のデータのように、各プロジェクトへの参加が「主担当」「副担当」「メンバー」のいずれかに分類されていれば、3つの割合の合計は100%になります。
主担当の割合が高いからといって、業務負荷が重いとは限りません。案件の規模や期間、難易度なども考慮する必要があります。
予定工数の大きい案件と役割の構成比を組み合わせれば、参加プロジェクト数だけでは見えない担当状況を把握できます。案件の割り振りや役割分担を見直す際にも役立つでしょう。
























![1冊ですべて身につくHTML & CSSとWebデザイン入門講座[第2版] 製品画像:3位](https://m.media-amazon.com/images/I/51skMJ-OVcL._SL160_.jpg)






