Excel VBAを使用したプロジェクトのリスク管理報告書作成の自動化

プロジェクト管理において、リスク管理は必須の項目となっています。この記事では、Excel VBAを使用してプロジェクトのリスク管理報告書を自動で作成する方法を詳しく解説します。具体的なコード例とその詳細、さらには応用例までを網羅していますので、VBA初心者でも取り組むことができます。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

Excel VBAによるリスク管理報告書の基本

Excel VBAを使用することで、手動でのデータ入力やフォーマット設定の手間を大幅に削減し、リスク管理報告書の作成を効率化することができます。

基本コードの概要

以下のVBAコードは、プロジェクトのリスクデータを読み取り、それを基に報告書をExcelシート上に自動作成するものです。


Sub CreateRiskReport()
    Dim LastRow As Long
    Dim i As Long

    ' データが入力されている最終行を取得
    LastRow = ThisWorkbook.Sheets("Data").Cells(ThisWorkbook.Sheets("Data").Rows.Count, "A").End(xlUp).Row

    ' ヘッダーの作成
    With ThisWorkbook.Sheets("Report")
        .Cells(1, 1).Value = "リスクID"
        .Cells(1, 2).Value = "リスク内容"
        .Cells(1, 3).Value = "影響度"
        .Cells(1, 4).Value = "発生確率"
    End With

    ' データのコピー
    For i = 2 To LastRow
        ThisWorkbook.Sheets("Report").Cells(i, 1).Value = ThisWorkbook.Sheets("Data").Cells(i, 1).Value
        ThisWorkbook.Sheets("Report").Cells(i, 2).Value = ThisWorkbook.Sheets("Data").Cells(i, 2).Value
        ThisWorkbook.Sheets("Report").Cells(i, 3).Value = ThisWorkbook.Sheets("Data").Cells(i, 3).Value
        ThisWorkbook.Sheets("Report").Cells(i, 4).Value = ThisWorkbook.Sheets("Data").Cells(i, 4).Value
    Next i
End Sub

このコードは、「Data」という名前のシートからリスクの情報を読み取り、「Report」という名前のシートに報告書として整形して出力します。

基本コードの解説

1. データが入力されている最終行を取得するためのコード:
これは、データ入力の範囲が変わる可能性があるため、動的に最終行を取得しています。

2. ヘッダーの作成:
報告書のヘッダー部分を作成しています。リスクID、リスク内容、影響度、発生確率という4つのカテゴリーでデータを整理します。

3. データのコピー:
For文を使用して、’Data’シートの情報を’Report’シートにコピーしています。

応用例

Excel VBAを使用することで、基本的な報告書作成だけでなく、さまざまな応用例も考えられます。

応用例1: リスクの評価スコアの自動計算

リスクの影響度と発生確率を掛け合わせることで、リスクの評価スコアを自動計算する方法を紹介します。


Sub CalculateRiskScore()
    Dim LastRow As Long
    Dim i As Long

    ' データが入力されている最終行を取得
    LastRow = ThisWorkbook.Sheets("Report").Cells(ThisWorkbook.Sheets("Report").Rows.Count, "A").End(xlUp).Row

    ' スコアの計算
    For i = 2 To LastRow
        ThisWorkbook.Sheets("Report").Cells(i, 5).Value = ThisWorkbook.Sheets("Report").Cells(i, 3).Value * ThisWorkbook.Sheets("Report").Cells(i, 4).Value
    Next i
End Sub

応用例2: リスクのランキング表示

計算したリスクの評価スコアを基に、リスクのランキングを自動表示する方法を紹介します。


Sub RankRisks()
    Dim LastRow As Long

    ' データが入力されている最終行を取得
    LastRow = ThisWorkbook.Sheets("Report").Cells(ThisWorkbook.Sheets("Report").Rows.Count, "A").End(xlUp).Row

    ' ランキングの計算
    ThisWorkbook.Sheets("Report").Range("F2:F" & LastRow).Formula = "=RANK(E2,E$2:E$" & LastRow & ",0)"
End Sub

応用例3: リスクのカテゴリー別集計

リスクのカテゴリー別に、リスクの数や平均評価スコアを自動集計する方法を紹介します。


Sub Categorize

Risks()
    Dim LastRow As Long

    ' データが入力されている最終行を取得
    LastRow = ThisWorkbook.Sheets("Report").Cells(ThisWorkbook.Sheets("Report").Rows.Count, "A").End(xlUp).Row

    ' カテゴリー別の集計
    ThisWorkbook.Sheets("Summary").Range("A1").Value = "カテゴリー"
    ThisWorkbook.Sheets("Summary").Range("B1").Value = "リスク数"
    ThisWorkbook.Sheets("Summary").Range("C1").Value = "平均評価スコア"

    ThisWorkbook.Sheets("Summary").Range("A2").Formula = "=UNIQUE(Report!B2:B" & LastRow & ")"
    ThisWorkbook.Sheets("Summary").Range("B2").Formula = "=COUNTIF(Report!B2:B" & LastRow & ",A2)"
    ThisWorkbook.Sheets("Summary").Range("C2").Formula = "=AVERAGEIF(Report!B2:B" & LastRow & ",A2,Report!E2:E" & LastRow & ")"
End Sub

これらの応用例を取り入れることで、リスク管理の報告書作成がさらに効率的に、かつ詳細に行えるようになります。

まとめ

Excel VBAを使用することで、プロジェクトのリスク管理報告書の作成を自動化することが可能です。基本的な報告書作成から、リスクの評価スコアの自動計算、ランキング表示、カテゴリー別集計といった応用例までを取り入れることで、より効果的なリスク管理を実現することができます。この記事を参考に、リスク管理の業務効率化を図ってみてください。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次