Excel VBAを利用した部門別年度予算達成度レポートの作成方法

この記事では、Excel VBAを使用して「部門別の年度予算達成度レポート」を作成する方法について詳しく解説します。具体的なコード例とその詳細、応用例を含め、日本のビジネスシーンに合わせた内容を提供します。

目次

Excel VBAの基本

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

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

基本のコードとその解説

VBAを使って、部門ごとの年度予算とその達成度を報告するレポートを作成する方法を学びます。以下に基本となるコードを示します。


Sub CreateReport()
    Dim LastRow As Long
    Dim i As Long
    Dim AchievementRate As Double
    
    'データが存在する最後の行を取得
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row
    
    'ヘッダーの設定
    ThisWorkbook.Sheets("Sheet1").Cells(1, 3).Value = "達成度 (%)"
    
    '達成度を計算
    For i = 2 To LastRow
        AchievementRate = ThisWorkbook.Sheets("Sheet1").Cells(i, 2).Value / ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value
        ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value = AchievementRate * 100
    Next i
End Sub

このコードでは、シート1のA列に予算、B列に実績があり、C列に達成度を表示します。まず、データの最後の行を取得し、その後ヘッダーを設定して、達成度を計算しています。

補足事項

VBAでの処理を行う際、シートの名前やセルの位置などは、環境やレポートの形式に応じて適切に変更する必要があります。また、エラーハンドリングの追加や、処理速度向上のための最適化なども考慮すると良いでしょう。

応用例

応用例1:条件に応じたセルの色分け

達成度に応じて、セルの背景色を変更する例です。


For i = 2 To LastRow
    If ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value >= 100 Then
        ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Interior.Color = RGB(0, 255, 0) '緑色で表示
    ElseIf ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value >= 80 Then
        ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Interior.Color = RGB(255, 255, 0) '黄色で表示
    Else
        ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Interior.Color = RGB(255, 0, 0) '赤色で表示
    End If
Next i

応用例2:達成度に応じたコメント追加

セルに達成度に応じたコメントを追加する例です。


For i = 2 To LastRow
    If ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value >= 100 Then
        ThisWorkbook.Sheets("Sheet1").Cells(i, 4).Value = "目標達成!"
    ElseIf ThisWorkbook.Sheets("Sheet1").Cells(i, 3).Value >= 80 Then
        ThisWorkbook.Sheets("Sheet1").Cells(i, 4).Value = "もう少しで目標達成!"
    Else
        ThisWorkbook.Sheets("Sheet1").Cells(i, 4).Value = "目標達成までには距離があります。"
    End If
Next i

応用例3:達成度ランキングの追加

部門ごとの達成度ランキングを作成する例です。


ThisWorkbook.Sheets("Sheet1").Range("D1").Value = "ランキング"
ThisWorkbook.Sheets("Sheet1").Range("C2:C" & LastRow).Rank.EquationRelative = False

まとめ

Excel VBAを利用して、部門別の年度予算達成度レポートを作成する方法を学びました。基本的なコードから応用例まで、日本のビジネスシーンでのニーズに合わせた内容を提供しました。これを機に、VBAを活用して、より高度なレポート作成を行ってみてはいかがでしょうか。

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

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

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

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

コメント

コメントする

目次