Excel VBA | VBAで改行する方法

Excel VBA VBA
スポンサーリンク

発展練習問題:部署ごとの売上レポート

では「部署ごとの売上を集計してレポートにする」発展問題を作ってみます。実務でありがちな「部門別集計」を題材にしますね。

問題設定

  • A列:部署名(例:営業、開発、総務…)
  • B列:売上金額
  • データは A2:B7 に入力されているとします。

このデータを集計して、セル D2 に次のようなレポートを作成してください。

部署別売上レポート
日付: 2025/10/17
担当者: 山田太郎
----------------
営業: 300000円
開発: 250000円
総務: 120000円
----------------
合計: 670000円
平均: 223333.33円

回答例コード

Sub DeptSalesReport()
    Dim lastRow As Long
    Dim i As Long
    Dim dept As String
    Dim sales As Double
    Dim dict As Object
    Dim report As String
    Dim total As Double
    Dim count As Long
    Dim today As String
    Dim staff As String
    
    ' ヘッダー情報
    today = Format(Date, "yyyy/mm/dd")
    staff = "山田太郎"
    
    ' 部署ごとの売上を集計するためにDictionaryを使う
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' 最終行を取得(A列の最終行)
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    ' データをループして集計
    For i = 2 To lastRow
        dept = Range("A" & i).Value
        sales = Range("B" & i).Value
        
        If dict.Exists(dept) Then
            dict(dept) = dict(dept) + sales
        Else
            dict.Add dept, sales
        End If
        
        total = total + sales
        count = count + 1
    Next i
    
    ' レポート作成
    report = "部署別売上レポート" & vbLf & _
             "日付: " & today & vbLf & _
             "担当者: " & staff & vbLf & _
             "----------------" & vbLf
    
    For Each dept In dict.Keys
        report = report & dept & ": " & dict(dept) & "円" & vbLf
    Next dept
    
    report = report & "----------------" & vbLf & _
             "合計: " & total & "円" & vbLf & _
             "平均: " & Format(total / count, "0.00") & "円"
    
    ' 出力
    Range("D2").Value = report
End Sub
VB

解説

  • Dictionary を使って「部署ごとに売上を合計」している。
  • dict.Exists(dept) で既に部署が登録されていれば加算、なければ新規追加。
  • 合計平均は全体の売上を集計して最後に計算。
  • vbLf を使ってセル内で改行。
  • ヘッダーに「日付」「担当者」を入れることで、実務的なレポート形式になる。

発展アイデア

  • 部署ごとに「件数」も数えて平均売上を出す
  • 部署ごとに「最高売上」「最低売上」を出す
  • MsgBoxで表示するバージョンを作る

👉 この課題をマスターすると「Excelで入力されたデータをVBAで自動集計 → レポート化」という実務の王道パターンが身につきます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました