おすなのぶろぐ

プログラミングとかの Tips 置き場。

Excel の積み上げ棒グラフで値が 0 の系列名を非表示にする方法

グラフの系列名が値が 0 でも表示されてしまい困る

Excel で
f:id:osuna:20121208234624p:plain
のような表を積み上げ棒グラフで
f:id:osuna:20121208234653p:plain
みたいな感じにしたいなぁ、と思って系列名を表示させると、
f:id:osuna:20121208234727p:plain
こんな風に値が 0 の系列名も表示されてしまい、見づらくなってしまいます。
何か自動的に設定できる方法があるのかもしれませんが、見たところ自動設定的な何かはないようです。

マクロで系列名表示 → 値 0 の系列名削除を自動化

仕方ないのでマクロで自動化することにしました。
(Excel 2007 で動作を確認しました)

Public Sub SetDataLabel()
    Dim Chart As Chart
    Set Chart = Application.ActiveChart
    
    If Chart Is Nothing Then
        Exit Sub
    End If
    
    Dim Series As Series
    Dim Values As Variant
    Dim i As Integer
    For Each Series In Chart.SeriesCollection
        With Series
            Values = .Values
            .ApplyDataLabels
        End With
        
        With Series.DataLabels
            .Position = xlLabelPositionCenter
            .ShowSeriesName = True
            .ShowValue = False
        End With
        
        For i = LBound(Values) To UBound(Values)
            If Values(i) = 0 Then
                Series.Points(i).DataLabel.Delete
            End If
        Next i
    Next
End Sub

系列名を表示させたいグラフを選択してこのマクロを実行すれば、自動的に
f:id:osuna:20121208234653p:plain
こんな風にしてくれます。