【ExcelVBA】セルの値を横棒グラフで表示させるには(条件付き書式のデータバーを使用)

この記事では、条件付き書式のデータバーを使ってセルの値を横棒グラフで表示させる方法についてご説明します。

今回扱う横棒グラフとは、条件付き書式のデータバーのことを指します。

下の画像が条件付き書式のデータバーが出力された結果です。

見た目は横棒グラフのように見えて、各値の大小が確認しやすくなっているのが特徴です。

【動画】条件付き書式のデータバーを使ってセルの値を横棒グラフで表示させる実際の動き

本題に入る前に、まずは次の動画をご覧ください。


B列のセルの値を参照し、条件付き書式のデータバーを使ってセルの値を横棒グラフでC列に表示させています。

マクロ作成の流れ

STEP.1
グラフに表示させたい値があるセルの右隣に、その値を参照する数式を設定する
グラフに表示させたい値があるセルの右隣に、その値を参照する数式を設定します。
STEP.2
グラフを表示させるセル(STEP.1で数式を設定したセル)に対して、既存の条件付き書式設定を削除する
グラフを表示させるセル(STEP.1で数式を設定したセル)に対して、既存の条件付き書式設定を削除します。
STEP.3
STEP.1で設定した数式のあるセルに条件付き書式のデータバーを表示させるよう設定する
STEP.1で設定した数式のあるセルに条件付き書式のデータバーを表示させるよう設定します。
STEP.4
データバーの各設定を行う
データバーの各設定を行います。
今回のマクロでは次の設定を行います。
・データバーが表示されているセルには値を表示させない
・データバーの最大値(今回は100)と最小値(今回は0)を設定する
・データバーに色を設定する(今回はオレンジ色)
・データバーを塗りつぶし設定にする

Excelファイルの例

今回は次のExcelファイルを用意しました。

B列にはグラフに表示させたい値が入力されています。

このB列の値を、条件付き書式のデータバーで横棒グラフ表示させます。

マクロを実行すると、下の画像のとおりにC列に条件付き書式のデータバーで横棒グラフが表示されます。

コードの例

Option Explicit

Sub test()

    Dim rng As range        'Rangeオブジェクト格納用変数
    
    'データバーの最小値を設定
    Const minVal As Double = 0
    
    'データバーの最大値を設定
    Const maxVal As Double = 100
    
    'データバーを表示させるセルの範囲を取得する
    Set rng = range("C2:C11")

    'セルに数式を設定する(B列のセルの値を参照する数式)
    rng.Formula = "=B2"
    
    '既存の条件付き書式設定を削除する
    rng.FormatConditions.Delete
    
    With rng.FormatConditions.AddDatabar
    
        'データバー内に値を表示しないようにする(Trueなら表示させる)
        .ShowValue = False
        
        'データバーの最小値を0に設定する
        .MinPoint.Modify newtype:=xlConditionValueNumber, newvalue:=minVal
        
        'データバーの最小大を100に設定する
        .MaxPoint.Modify newtype:=xlConditionValueNumber, newvalue:=maxVal
        
        'データバーの色を設定する(オレンジ色を設定)
        .BarColor.Color = RGB(255, 153, 0)
        
        'データバーを塗りつぶし状態に設定する(xlDataBarFillSolidは塗りつぶし)
        .BarFillType = xlDataBarFillSolid
        
    End With

End Sub

注目すべきコード①

最初に見て頂きたいのは14行目から17行目です。

    'データバーを表示させるセルの範囲を取得する
    Set rng = range("C2:C11")

    'セルに数式を設定する(B列のセルの値を参照する数式)
    rng.Formula = "=B2"

コードの説明

以上のコードは、データバーを表示させるセルの範囲を取得し、そのセルに数式「=B2」を設定する処理のコードです。

今回はB2のセルからB11のセルの値を、C2セルからC11のセルにグラフ表示させたいので、14行目でC2からC11までのセルに対して「=B2」の数式を設定しています。

この数式の設定は、左隣のセルを参照するために行います。

B列のセルは値を、C列は隣のB列の値をグラフ表示したいので左隣のセルを参照するよう「=B2」と数式を設定しています。

ちなみに、C2からC11までのセルに「=B2」の数式を設定すると、C2からC11のセルすべて「=B2」が設定されてしまい、すべてB2の値を参照するのでは?と思われるかもしれませんが、そうはならずに例えばC3のセルなら「=B3」、C11のセルなら「=B11」と設定されます。(相対参照により、C列それぞれの左隣のセルを参照する)

注目すべきコード②

次に見て頂きたいのは20行目です。

    '既存の条件付き書式設定を削除する
    rng.FormatConditions.Delete

コードの説明

以上のコードは、既存の条件付き書式設定を削除する処理のコードです。

条件付き書式のデータバーを表示させるセルに対して、既存の条件付き書式設定を削除しておきます。

注目すべきコード③

次に見て頂きたいのは22行目から39行目です。

    With rng.FormatConditions.AddDatabar
    
        'データバー内に値を表示しないようにする(Trueなら表示させる)
        .ShowValue = False
        
        'データバーの最小値を0に設定する
        .MinPoint.Modify newtype:=xlConditionValueNumber, newvalue:=minVal
        
        'データバーの最小大を100に設定する
        .MaxPoint.Modify newtype:=xlConditionValueNumber, newvalue:=maxVal
        
        'データバーの色を設定する(オレンジ色を設定)
        .BarColor.Color = RGB(255, 153, 0)
        
        'データバーを塗りつぶし状態に設定する(xlDataBarFillSolidは塗りつぶし)
        .BarFillType = xlDataBarFillSolid
        
    End With

コードの説明

以上のコードは、条件付き書式のデータバーを表示とデータバーの各設定を行う処理のコードです。

コードの詳細

22行目のコードは、条件付き書式のデータバーを表示させるコードです。

25行目のコードでは、データバー内に値を表示しないよう設定します。

なお、Trueならデータバー内に値を表示させます。

28行目のコードではデータバーの最小値を、31行目のコードではデータバーの最大値を設定します。

今回のコードでは、最小値と最大値を以下のコードで設定しています。(最小値0、最大値100)

    'データバーの最小値を設定
    Const minVal As Double = 0
    
    'データバーの最大値を設定
    Const maxVal As Double = 100

34行目のコードでは、データバーの色オレンジに設定します。

37行目のコードでは、データバーを塗りつぶし状態に設定します。

動作確認

Excelファイルの例」をご覧ください。

最後に

この記事では、条件付き書式のデータバーを使ってセルの値を横棒グラフで表示させる方法についてご説明しました。

条件付き書式のデータバーを使うと、セルの値の大小が見て分かりやすいようになります。

条件付き書式のデータバーを使ってセルの値を横棒グラフで表示させたい場合は本記事を参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら