Excel VBA | エラー種別ごとに件数を集計してグラフ化するマクロ

VBA
スポンサーリンク

こちらが「エラー種別ごとに件数を集計してグラフ化する」VBAサンプルです。
チェック結果シートに「行番号・列名・エラー内容」を一覧化した後、その「エラー内容」ごとに件数を集計し、棒グラフで可視化します。


サンプルコード

Sub SummarizeErrorsAndChart()
    Dim wsSrc As Worksheet, wsDst As Worksheet
    Dim lastRow As Long, i As Long
    Dim dict As Object
    Dim key As Variant
    Dim chartObj As ChartObject
    
    ' チェック結果シートを参照
    Set wsSrc = Sheets("チェック結果")
    lastRow = wsSrc.Cells(wsSrc.Rows.Count, 1).End(xlUp).Row
    
    ' 集計用シートを準備
    On Error Resume Next
    Set wsDst = Sheets("エラー集計")
    If wsDst Is Nothing Then
        Set wsDst = Sheets.Add
        wsDst.Name = "エラー集計"
    Else
        wsDst.Cells.Clear
    End If
    On Error GoTo 0
    
    ' Dictionaryで件数集計
    Set dict = CreateObject("Scripting.Dictionary")
    For i = 2 To lastRow
        If wsSrc.Cells(i, 3).Value <> "" Then
            If dict.exists(wsSrc.Cells(i, 3).Value) Then
                dict(wsSrc.Cells(i, 3).Value) = dict(wsSrc.Cells(i, 3).Value) + 1
            Else
                dict.Add wsSrc.Cells(i, 3).Value, 1
            End If
        End If
    Next i
    
    ' 集計結果を出力
    wsDst.Range("A1").Value = "エラー種別"
    wsDst.Range("B1").Value = "件数"
    i = 2
    For Each key In dict.keys
        wsDst.Cells(i, 1).Value = key
        wsDst.Cells(i, 2).Value = dict(key)
        i = i + 1
    Next key
    
    ' グラフ作成
    Set chartObj = wsDst.ChartObjects.Add(Left:=250, Top:=50, Width:=400, Height:=300)
    With chartObj.Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=wsDst.Range("A1:B" & i - 1)
        .HasTitle = True
        .ChartTitle.Text = "エラー種別ごとの件数"
        .Axes(xlCategory).HasTitle = True
        .Axes(xlCategory).AxisTitle.Text = "エラー種別"
        .Axes(xlValue).HasTitle = True
        .Axes(xlValue).AxisTitle.Text = "件数"
    End With
    
    MsgBox "エラー件数を集計し、グラフを作成しました。"
End Sub
VB

✅ 処理の流れ

  1. 「チェック結果」シートから「エラー内容」を読み込む
  2. Dictionaryで件数を集計
  3. 「エラー集計」シートに一覧出力
  4. 棒グラフを自動生成(エラー種別ごとの件数を可視化)

💡 応用ポイント

  • グラフ種類を xlPie にすれば円グラフ化も可能
  • 集計結果をさらに「重大度別」「列別」に分けることもできる
  • 定期的に実行すれば、入力品質の傾向分析に役立つ

👉 このマクロを使えば、エラーの種類ごとの発生件数を一目で把握できるレポートが自動生成できます。

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