Excel 単位表示 - eiichiromomma/CVMLAB GitHub Wiki

(Excel) 単位表示

予算や決算の内訳グラフで[単位:千円]とかする方法

DisplayUnitLabel

Excelの標準のグラフ機能では数値軸の脇に[%]とか単位だけ記入できない。 マクロのヘルプを探しているとDisplayUnitLabelなるプロパティがあり、例として

With Charts("Chart1").Axes(xlValue).DisplayUnitLabel
    .Caption = "百万"
    .AutoScaleFont = False
End With

があった。 試しに

Sub 単位挿入()
    With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue).DisplayUnitLabel
        .Caption = "百万"
        .AutoScaleFont = False
    End With
End Sub

みたいなマクロを書いてみたがエラー。

DisplayUnit

実はDisplayUnitLabelはDisplayUnitのオマケみたいなものだったことが後で判明。

With Charts("Chart1").Axes(xlValue)
    .DisplayUnit = xlHundreds
    .HasTitle = True
    .AxisTitle.Caption = "割引合計"
End With

が例にあるので

Sub 単位挿入()
    With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue)
        .DisplayUnit = xlHundreds
        .HasTitle = True
        .AxisTitle.Caption = "割引合計"
        With .DisplayUnitLabel
            .Caption = "百万"
            .AutoScaleFont = False
        End With
    End With
End Sub

とすると

今度は上手くいった。 どうやらDisplayUnitでxlNone、xlHundreds、xlThousands、xlTenThousands、xlHundredThousands、xlMillions、xlTenMillions、xlHundredMillions、xlThousandMillions、xlMillionMillions、xlCustomが指定できるらしい。 ではDisplayUnitLabelを指定しないとどうなるのかと思い

Sub 単位挿入()
    With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue)
        .DisplayUnit = xlHundreds
        .HasTitle = True
        .AxisTitle.Caption = "割引合計"
        'With .DisplayUnitLabel
        '    .Caption = "百万"
        '    .AutoScaleFont = False
        'End With
    End With
End Sub

としてみる。

「百」ですか。。。 英語版だとHundredsとか出るのかも知れないが、こんなグラフは見た事がない。 単純に単位だけ書きたい場合は以下のようにすると良いだろう。

Sub 単位挿入()
    With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue)
        .DisplayUnit = xlCustom
        .DisplayUnitCustom = 1
        .HasTitle = True
        .AxisTitle.Caption = "割引合計"
        With .DisplayUnitLabel
            .Caption = "[%]"
            .AutoScaleFont = False
            .Orientation = 0
        End With
    End With
End Sub

とすれば1で割って(何もしない)、単位に[%]と書ける。ちなみにOrientation=0が無いと縦書きになり[%]が縦に並ぶ。