進捗管理をエクセルで行う方法【複数人の進捗を一括管理できる仕組みを紹介】

疑問がある人
こんな疑問にお答えします。
この記事では、各個人シートの情報を進捗管理シートに集約するVBAを使ってチームの進捗管理を効率よく把握する方法を紹介しています。
チームの進捗管理を行う方法はいくつかありますが、効率の良い方法を採用しなければ作業が複雑化して余計な仕事が増えてしまうことがあります。私の職場では「各個人が作成している進捗管理表を一つ一つコピーして1つのエクセルファイルにペーストする」という作業を行っていましたが、エクセルファイルの数が多いと作業に時間がかかったりコピペミスが発生したりする可能性があります。
情報を1つのシートに集約するVBAを導入すればこんな問題を解決することができます。
進捗管理を行うエクセルとはどういうもの?
進捗管理をするエクセルは、Aさんはここまで仕事が進んでいて、Bさんはまだ全然仕事が進んでいない、というようにメンバー各々がどれだけ仕事が進んでいるかを確認するためのものです。
各メンバーのシート情報を「進捗管理シート」に集約します。
VBAを使って情報を集約することで、転記ミスを防止し作業時間を短縮することができます。業務に合わせた様式に設定することで、どんな様式にも対応することができます。
今まで私が経験した進捗状況管理方法は以下のようなものでした。
チーム全体の進捗状況を管理するために、メンバー各々が編集している進捗管理表エクセルを一つ一つ確認する
→チーム全体の比較ができない
進捗管理ブックを作成し、メンバー各々のシートを作って編集する
→チーム全体の比較ができない
→管理を目的としているのに、編集作業がメインになってしまう
これらの方法はあまり効率のいい手段ではありません。
情報を集約するVBAを使えば、チームメンバーが編集する進捗管理のエクセルファイルもしくはシートの情報を一瞬で集約することができるので、上記のデメリットを全て解消することごできます。
進捗管理VBAを導入する方法
進捗管理VBAを導入する方法を画像を使って順番にご紹介していきます。
1.様式設定
この記事で紹介している進捗管理表は上記の様式で作成しています。業務内容によって様式は自由に変更することができます。
2.VBAを起動
3.標準モジュールを作成
4.ModuleにVBAを記入
5.Moduleに記入するサンプルVBA
1 | Sub 案件進捗() |
2 | Dim Ash As Worksheet |
3 | Dim Bsh As Worksheet |
4 | Dim Csh As Worksheet |
5 | Dim Dsh As Worksheet |
6 | Dim Esh As Worksheet |
7 | Dim Fsh As Worksheet |
8 | Set Ash = ThisWorkbook.Worksheets(“案件進捗") |
9 | Set Bsh = ThisWorkbook.Worksheets(“Aさん") |
10 | Set Csh = ThisWorkbook.Worksheets(“Bさん") |
11 | Set Dsh = ThisWorkbook.Worksheets(“Cさん") |
12 | Set Esh = ThisWorkbook.Worksheets(“Dさん") |
13 | Set Fsh = ThisWorkbook.Worksheets(“Eさん") |
14 | ga = Ash.Cells(Rows.Count, 2).End(xlUp).Row |
15 | gb = Bsh.Cells(Rows.Count, 2).End(xlUp).Row |
16 | gc = Csh.Cells(Rows.Count, 2).End(xlUp).Row |
17 | gd = Dsh.Cells(Rows.Count, 2).End(xlUp).Row |
18 | ge = Esh.Cells(Rows.Count, 2).End(xlUp).Row |
19 | gf = Fsh.Cells(Rows.Count, 2).End(xlUp).Row |
20 | Ash.Range(Ash.Cells(5, 2), Ash.Cells(ga, 21)).Clear |
21 | Ash.Range(Ash.Cells(5, 2), Ash.Cells(ga, 21)).ClearFormats |
22 | Ash.Cells(4, 2) = “1" |
23 | For i = 6 To gb |
24 | ga = Ash.Cells(Rows.Count, 2).End(xlUp).Row |
25 | For j = 2 To 18 |
26 | Ash.Cells(ga + 1, j) = Bsh.Cells(i, j) |
27 | Next j |
28 | Next i |
29 | For i = 6 To gc |
30 | ga = Ash.Cells(Rows.Count, 2).End(xlUp).Row |
31 | For j = 2 To 18 |
32 | Ash.Cells(ga + 1, j) = Csh.Cells(i, j) |
33 | Next j |
34 | Next i |
35 | For i = 6 To gd |
36 | ga = Ash.Cells(Rows.Count, 2).End(xlUp).Row |
37 | For j = 2 To 18 |
38 | Ash.Cells(ga + 1, j) = Dsh.Cells(i, j) |
39 | Next j |
40 | Next i |
41 | For i = 6 To ge |
42 | ga = Ash.Cells(Rows.Count, 2).End(xlUp).Row |
43 | For j = 2 To 18 |
44 | Ash.Cells(ga + 1, j) = Esh.Cells(i, j) |
45 | Next j |
46 | Next i |
47 | For i = 6 To gf |
48 | ga = Ash.Cells(Rows.Count, 2).End(xlUp).Row |
49 | For j = 2 To 18 |
50 | Ash.Cells(ga + 1, j) = Fsh.Cells(i, j) |
51 | Next j |
52 | Next i |
53 | ga = Ash.Cells(Rows.Count, 2).End(xlUp).Row |
54 | Ash.Range(Ash.Cells(5, 2), Ash.Cells(ga, 18)).Borders.LineStyle = xlContinuous |
55 | Ash.Range(Ash.Cells(5, 2), Ash.Cells(ga, 18)).Borders(xlInsideVertical).LineStyle = xlContinuous |
56 | Ash.Range(Ash.Cells(5, 2), Ash.Cells(ga, 18)).Borders(xlInsideHorizontal).LineStyle = xlContinuous |
57 | Ash.Cells(4, 2).ClearContents |
58 | Ash.Range(Ash.Cells(5, 5), Ash.Cells(ga, 9)).HorizontalAlignment = xlCenter |
59 | Ash.Range(Ash.Cells(5, 11), Ash.Cells(ga, 14)).HorizontalAlignment = xlCenter |
60 | Ash.Range(“B:R").EntireColumn.AutoFit |
61 | Ash.Range(“E:I").EntireColumn.ColumnWidth = 8 |
62 | Ash.Range(“K:N").EntireColumn.ColumnWidth = 10 |
63 | End Sub |
6.シートにVBAを記入
7.シートに記入するサンプルVBA
1 | Private Sub Worksheet_SelectionChange(ByVal Target As Range) |
2 | On Error Resume Next |
3 | If Target.Row = 1 And Target.Column = 1 Then |
4 | Call 案件進捗 |
5 | If Err <> 0 Then |
6 | Err.Clear |
7 | End If |
8 | End If |
9 | End Sub |
シートに記入するVBAは、「進捗管理」シートのA1セルをクリックすると標準モジュールに記入したVBAを実行するという意味です。
8.VBAの実行
以上でVBAの導入は完了です。
下記のサイトでは、上記で紹介している進捗管理VBAが設定されたエクセルファイルをダウンロードしてお使いいただけます。進捗管理VBAをすぐに使ってみたい!という方は是非参考にしてみてください。
進捗管理VBAで仕事の効率アップ
進捗管理VBAを導入することで仕事の効率を格段にアップさせることができます。
- 編集ミスが発生しない
- 様式を自由に変更することができる
- 進捗管理業務に専念することができる

ガッツポーズの人
下記の動画では、処理が複雑でデータ量の多いエクセルファイルに導入されたVBAをご紹介しています。
動画で紹介している業務を手作業で行っていた頃は以下のような問題がありました。
- 編集作業に時間がかかる
- データ量が多いため編集ミスが発生する
- 担当者が変わると更に編集作業に時間がかかる
シートからシートに情報を転記するVBAを使えば上記の問題を解決することができます。さらに検査表を自動で作成するマクロには、「条件によって背景色を変更するVBA」「罫線を編集するVBA」が設定されています。
いろんなVBAを組み合わせることで、その業務に適したVBAを開発することができます。

ガッツポーズの人
業務内容に合わせたVBAを開発するためには基礎を学ぶ必要がある
進捗管理VBAのように、VBAには仕事の効率をアップさせることができる機能がいろいろあります。VBAのプログラミングスキルを身に着けることで、今まで何時間もかかかっていた作業をほんの数分で処理することができるようになります。
業務内容に合わせたVBAを開発するには、プログラミング(VBA)の基礎を身に着ける必要があります。VBAを基本から学びたい!という方におすすめなのが、オンラインプログラミング学習サービス【1st Step】です。
【1st Step】は初心者のためのプログラミング学習サービスで、C言語・java・VBAの3つのプログラミングの基礎をオンラインで勉強することができます。
- 基礎からプログラミングを勉強したい
- まとまった勉強時間の確保が難しい
- 途中で挫折したくない
上記のように考えている方に【1st Step】はおすすめです。
下記の記事では、オンラインプログラミング学習サービス【1st Step】の特徴や私の体験など詳しく紹介しています。
これからVBAの勉強を始めようと考えている方は是非参考にしてみてください。
ディスカッション
コメント一覧
まだ、コメントがありません