大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、散布図を作成する方法について、ご紹介します。散布図を作成するには、グラフの挿入、グラフの種類を設定、参照範囲を設定する、という手順でできます。VBAでグラフの操作を自動化していきましょう。

はじめに

この記事では、散布図を作成する方法について、ご紹介します。

散布図を作成する手順は、

  • グラフを挿入
  • グラフの種類を設定
  • 参照範囲を設定

という流れになります。

グラフの書式設定についても、簡単にご紹介します。

  • タイトルと凡例の設定
  • 系列の線の色の設定
  • 系列のマーカーの設定
  • 系列のデータラベルの設定

という感じです。

グラフの書式設定は、VBAコードがたくさんあって、結構大変です。

「ベース」となるグラフを作成して、コピーして利用すると、効率的にグラフの操作を自動化できます。

グラフのコピーについて、詳細はこちらでまとめています。

では、散布図を作成する方法について、解説していきます。

この記事で紹介すること

  • VBAで散布図を作成する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

散布図を作成するVBAコードにいて、まとめています。

VBAコードだけを確認したい場合に、ご活用ください。

'散布図を作成
ActiveSheet.Shapes.AddChart2.Select 'グラフを挿入
ActiveChart.ChartType = xlXYScatter '散布図に変更
ActiveChart.SetSourceData Range("A1").CurrentRegion '参照範囲を設定

'グラフ種類を変更
ActiveSheet.ChartObjects(1).Chart.ChartType = xlXYScatter '散布図(平滑線とマーカー)

'散布図の種類
ActiveChart.ChartType = xlXYScatter '散布図
ActiveChart.ChartType = xlXYScatterSmooth '散布図(平滑線とマーカー)
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers '散布図(平滑線)
ActiveChart.ChartType = xlXYScatterLines '散布図(直線)
ActiveChart.ChartType = xlXYScatterLinesNoMarkers '散布図(直線とマーカー)
ActiveChart.ChartType = xlBubble 'バブル
ActiveChart.ChartType = xlBubble3DEffect '3-D効果付きバブル
    
'参照範囲を変更
ActiveSheet.ChartObjects(1).Chart.SetSourceData Range("A1").CurrentRegion

では、解説していきます。

散布図のグラフを作成する

散布図のグラフを作成してみます。

「Shapes.AddChart2」を使う

グラフを作成するには、「Shapes.AddChart2」を使います。

  • グラフを作成
  • グラフの種類を選択
  • 参照範囲を設定

という流れで、散布図を作成します。

Sub TEST1()

    '散布図を作成
    ActiveSheet.Shapes.AddChart2.Select 'グラフを挿入
    ActiveChart.ChartType = xlXYScatter '散布図に変更
    ActiveChart.SetSourceData Range("A1").CurrentRegion '参照範囲を設定
    
End Sub

データを用意しておきます。

元データ

データを用意しておきます

では、VBAコードを実行してみます。

「散布図」を作成できた

「散布図」を作成できた

「散布図」を作成できました。

散布図の種類を変更

散布図の種類を変更してみます。

「ChartType」を使う

グラフの種類を変更するには、「ChartType」を使います。

Sub TEST2()
    
    'グラフ種類を変更
    ActiveSheet.ChartObjects(1).Chart.ChartType = xlXYScatterSmooth '散布図(平滑線とマーカー)
    
End Sub

グラフを用意しておきます。

元グラフ

グラフを用意しておきます

では、VBAコードを実行してみます。

「平滑線付きの散布図」に変更できた

VBAで「平滑線付きの散布図」に変更できました

VBAで「平滑線付きの散布図」に変更できました。

散布図の種類

「散布図」の種類は、こんな感じです。

散布図の種類

  • 散布図(xlXYScatter)
  • 散布図(平滑線とマーカー)(xlXYScatterSmooth)
  • 散布図(平滑線)(xlXYScatterSmoothNoMarkers)
  • 散布図(直線)(xlXYScatterLines)
  • 散布図(直線とマーカー)(xlXYScatterLinesNoMarkers)
  • バブル(xlBubble)
  • 3-D効果付きバブル(xlBubble3DEffect)

VBAコードの例を記載しておきます。

散布図のVBAコード例

'散布図の種類
ActiveChart.ChartType = xlXYScatter '散布図
ActiveChart.ChartType = xlXYScatterSmooth '散布図(平滑線とマーカー)
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers '散布図(平滑線)
ActiveChart.ChartType = xlXYScatterLines '散布図(直線)
ActiveChart.ChartType = xlXYScatterLinesNoMarkers '散布図(直線とマーカー)
ActiveChart.ChartType = xlBubble 'バブル
ActiveChart.ChartType = xlBubble3DEffect '3-D効果付きバブル

作成したい種類に応じて、VBAコードを選択しましょう。

その他のグラフ種類の一覧

他のグラフの種類については、こちらでまとめています。

散布図の参照範囲を変更する

散布図の「参照範囲」を変更してみます。

「SetSourceData」を使う

参照範囲を変更する場合は、「SetSourceData」を使います。

元データが変更された場合に、参照範囲を変更する際に使えます。

Sub TEST3()
    
    'データ範囲を設定
    ActiveSheet.ChartObjects(1).Chart.SetSourceData Range("A1").CurrentRegion
    
End Sub

元データにデータを追加します。

元データにデータを追加

元データにデータを追加します

では、VBAコードを実行してみます。

参照範囲を変更

VBAで参照範囲を変更できました

VBAで「参照範囲」を変更できました。

「SetSourceData」の使い方

「系列を追加」や「離れたセル範囲を参照」など便利な使い方があります。

「SetSourceData」の詳細な使い方について、こちらでまとめています。

散布図の位置とサイズを設定

散布図の「位置」と「サイズ」を設定してみます。

位置の設定

位置を設定してみます。

位置を設定するには、グラフの「左」と「上」の位置を設定します。

左と上の設定は、「.Left」と「.Top」でできます。

Sub TEST4()
    
    With ActiveSheet.ChartObjects(1)
        .Left = Range("B15").Left '左の位置
        .Top = Range("B15").Top '上の位置
    End With
    
End Sub

グラフを用意しておきます。

元グラフ

グラフを用意しておきます

では、VBAコードを実行してみます。

「左」と「上」を設定できた

VBAで「左」と「上」を設定できました

VBAで「左」と「上」を設定できました。

「.Left」や「.Top」を応用して使う

位置を「.Left」や「.Top」で取得できれば、別シートの「同じ位置」にグラフの「コピー」や「移動」ができます。

「.Left」や「.Top」の使い方について、詳細はこちらでまとめています。

幅と高さの設定

「幅」と「高さ」を設定してみます。

「幅」と「高さ」は、「.Width」と「.Height」を使います。

Sub TEST5()
    
    With ActiveSheet.ChartObjects(1)
        .Width = Range("B15:F23").Width '幅
        .Height = Range("B15:F23").Height '高さ
    End With
    
End Sub

グラフを用意しておきます。

元グラフ

グラフを用意しておきます

では、VBAコードを実行してみます。

「幅」と「高さ」を設定できた

VBAで「幅」と「高さ」を設定できました

VBAで「幅」と「高さ」を設定できました。

散布図のタイトルや軸、凡例の設定

散布図の「タイトル」や「軸」、「凡例」の設定をしてみます。

タイトルを設定する

タイトルを設定してみます。

「タイトル」を設定

「タイトル」の表示は、「.HasTitle = True」とします。

タイトルのテキストは、「.ChartTitle.Text」に入力するとできます。

Sub TEST6()
    
    With ActiveSheet.ChartObjects(1).Chart
        .HasTitle = True 'タイトルを表示
        .ChartTitle.Text = "個数 対 売上"
    End With
    
End Sub

元グラフを用意しておきます。

元グラフを用意しておきます

では、VBAコードを実行してみます。

VBAで「タイトル」を設定できました

VBAで「タイトル」を設定できました。

「タイトル」を非表示

「タイトル」を非表示にするには、「.HasTitle = False」とするとできます。

Sub TEST7()
    
    With ActiveSheet.ChartObjects(1).Chart
        .HasTitle = False 'タイトルを非表示
    End With
    
End Sub

では、VBAコードを実行してみます。

VBAで「タイトル」を非表示にできました

VBAで「タイトル」を非表示にできました。

タイトルの書式設定

タイトルの設定には、「位置」や「テキストの書式」、「背景色」、「枠線」の設定があります。

タイトルの設定について、詳細はこちらでまとめています。

凡例を設定する

凡例を設定してみます。

「凡例」を表示

「凡例」を表示するには、「.HasLegend = True」とします。

Sub TEST8()
    
    With ActiveSheet.ChartObjects(1).Chart
        .HasLegend = True '凡例を表示
        .Legend.IncludeInLayout = True 'グラフと重ねない
        .Legend.Position = xlBottom '下に表示
    End With
    
End Sub

グラフを用意しておきます。

グラフを用意しておきます

では、VBAコードを実行してみます。

VBAで「凡例」を設定できました

VBAで「凡例」を設定できました。

「凡例」を非表示

「凡例」を非表示にするには、「.HasLegend = False」です。

Sub TEST9()
    
    With ActiveSheet.ChartObjects(1).Chart
        .HasLegend = False '凡例を非表示
    End With
    
End Sub

では、VBAコードを実行してみます。

VBAで「凡例」を非表示にできました

VBAで「凡例」を非表示にできました。

凡例の書式設定

凡例の設定には、「位置」や、「背景色」、「枠線」の設定があります。

凡例の設定について、詳細はこちらでまとめています。

軸ラベルを設定する

「縦軸ラベル」と「横軸ラベル」を設定してみます。

「縦軸ラベル」を設定

「縦軸ラベル」を表示するには、「.Axes(xlValue, 1).HasTitle = True」とします。

「縦軸の第1軸」を表示したいので、「.Axes(xlValue, 1)」としています。

テキストを入力するには、「.AxisTitle.Text」に入力するとできます。

Sub TEST10()
    
    '縦軸の第1軸
    With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue, 1)
        .HasTitle = True '軸ラベルを表示
        .AxisTitle.Text = "売上"
    End With
        
End Sub

グラフを用意しておきます。

グラフを用意しておきます

では、VBAコードを実行してみます。

VBAで「縦軸ラベル」を設定できました

VBAで「縦軸ラベル」を設定できました。

「縦軸ラベル」を非表示

「縦軸ラベル」を非表示にするには、「.Axes(xlValue, 1).HasTitle = False」とします。

Sub TEST11()
    
    '縦軸の第1軸
    With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue, 1)
        .HasTitle = False '軸ラベルを非表示
    End With
        
End Sub

では、VBAコードを実行してみます。

VBAで「縦軸ラベル」を非表示できました

VBAで「縦軸ラベル」を非表示できました。

次は、「横軸ラベル」を設定してみます。

「横軸ラベル」を設定

「横軸ラベル」を表示するには、「.Axes(xlCategory, 1).HasTitle = True」とします。

「横軸」とするには、「.Axes」に「xlCategory」と入力します。

Sub TEST12()
    
    '横軸の第1軸
    With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory, 1)
        .HasTitle = True '軸ラベルを表示
        .AxisTitle.Text = "個数"
    End With
        
End Sub

グラフを用意しておきます。

グラフを用意しておきます

では、VBAコードを実行してみます。

VBAで「横軸ラベル」を設定できました

VBAで「横軸ラベル」を設定できました。

「横軸ラベル」を非表示

「横軸ラベル」を非表示にするには、「.Axes(xlCategory, 1).HasTitle」とします。

Sub TEST13()
    
    '横軸の第1軸
    With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory, 1)
        .HasTitle = False '軸ラベルを非表示
    End With
        
End Sub

では、VBAコードを実行してみます。

VBAで「横軸ラベル」を非表示にします

VBAで「横軸ラベル」を非表示にしました。

軸ラベルの書式設定

軸ラベルの書式設定には、「テキストの入力」や「文字の書式」、「背景色の書式」、「枠線の書式」など、設定できる項目があります。

軸ラベルは、「第1軸のラベル」だけでなく「第2軸のラベル」も設定できます。

軸ラベルの設定について、詳細はこちらでまとめています。

軸を設定する

VBAでグラフの「軸」を設定することもできます。

グラフの軸としては、次の4つがあります。

  • 横軸の第1軸
  • 縦軸の第1軸
  • 横軸の第2軸
  • 縦軸の第2軸

という感じです。

グラフの軸の設定で、頻度が高いのが、「スケール」の設定です。

スケール以外にも、次のような設定があります。

  • 軸のスケール
  • 軸の文字の書式
  • 軸の表示形式
  • 軸の背景の書式
  • 軸の反転

などです。

軸の設定について、詳細はこちらでまとめています。

散布図の系列の設定

散布図の系列の設定してみます。

  • 系列の線の色
  • 系列のマーカー
  • 系列のデータラベル

を設定します。

線を設定

線を設定してみます。

「線」を設定

「線」を設定するには、「.SeriesCollection(1).Format.Line」を使います。

Sub TEST14()
    
    '「1つ目」の系列の「線」
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Format.Line
        .Visible = msoTrue '塗りつぶしあり
        .ForeColor.RGB = RGB(255, 0, 0) '赤
    End With
        
End Sub

グラフを用意しておきます。

グラフを用意しておきます

では、VBAコードを実行してみます。

VBAで「線」を設定できました

VBAで「線」を設定できました。

「線」を非表示

「線」を非表示にするには、「.Visible = msoFalse」とします。

Sub TEST15()
    
    '「1つ目」の系列の「線」
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Format.Line
        .Visible = msoFalse '塗りつぶしなし
    End With
        
End Sub

では、VBAコードを実行してみます。

VBAで「線」を非表示にできました

VBAで「線」を非表示にできました。

線の色、太さ、種類の設定

他にも、系列の「線の色」や、「線の太さ」、「線の種類」、「ポイント単位での設定」などが設定できます。

系列の線の設定について、詳細はこちらでまとめています。

マーカーを設定

マーカーを設定してみます。

マーカーの「種類」を設定

マーカーの「種類」を設定するには、「.MarkerStyle」を使います。

マーカーの種類は、「1~9」を設定できます。

Sub TEST16()
    
    '「1つ目」の系列
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
        .MarkerStyle = 2 'マーカーを設定(種類:1~9)
    End With
    
End Sub

グラフを用意しておきます。

グラフを用意しておきます

では、VBAコードを実行してみます。

VBAでマーカーの「種類」を設定できました

VBAでマーカーの「種類」を設定できました。

マーカーを非表示

マーカーを非表示にするには、「.MarkerStyle = xlNone」とします。

Sub TEST17()
    
    '「1つ目」の系列
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
        .MarkerStyle = xlNone 'マーカー非表示
    End With
    
End Sub

では、VBAコードを実行してみます。

VBAでマーカーを非表示にできました

VBAでマーカーを非表示にできました。

マーカーの「サイズ」

マーカーの「サイズ」するには、「.MarkerSize」を使います。

Sub TEST18()
    
    '「1つ目」の系列
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
        .MarkerSize = 10 'マーカーサイズ
    End With
    
End Sub

グラフを用意しておきます。

グラフを用意しておきます

では、VBAコードを実行してみます。

VBAでマーカーの「サイズ」を設定できました

VBAでマーカーの「サイズ」を設定できました。

マーカーの「色」

マーカーの「背景色」は、「.MarkerBackgroundColor」を使います。

マーカーの「枠線色」は、「.MarkerForegroundColor」です。

背景色がマーカーの中心部分で、枠線色はマーカーの外側部分になります。

Sub TEST19()
    
    '「1つ目」の系列
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
        .MarkerBackgroundColor = RGB(255, 0, 0) 'マーカー背景色
        .MarkerForegroundColor = RGB(255, 0, 0) 'マーカー枠線色
    End With
        
End Sub

グラフを用意しておきます。

グラフを用意しておきます

では、VBAコードを実行してみます。

VBAでマーカーの「色」を設定できました

VBAでマーカーの「色」を設定できました。

マーカーの詳細な設定方法

マーカーをポイント単位で設定することもできます。

マーカーの設定について、詳細はこちらでまとめています。

データラベルを設定する

データラベルを設定してみます。

データラベルを表示

データラベルを表示するには、「.HasDataLabels = True」とします。

Sub TEST20()
    
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
        .HasDataLabels = True 'データラベルを表示
        .DataLabels.Position = xlLabelPositionRight '右
    End With
    
End Sub

グラフを用意しておきます。

グラフを用意しておきます

では、VBAコードを実行してみます。

VBAでデータラベルを表示できました

VBAでデータラベルを表示できました。

データラベルを非表示

データラベルを非表示にするには、「.HasDataLabels = False」です。

Sub TEST21()
    
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
        .HasDataLabels = False 'データラベルを非表示
    End With
    
End Sub

では、VBAコードを実行してみます。

VBAでデータラベルを非表示にできました

VBAでデータラベルを非表示にできました。

データラベルの書式設定

データラベルの「位置」の設定や、「ポイント単位での設定」、「文字サイズ」、「文字色」なども設定できます。

データラベルの設定について、詳細はこちらでまとめています。

おわりに

この記事では、散布図を作成する方法について、ご紹介しました。

散布図を作成する手順は、

  • グラフを挿入
  • グラフの種類を設定
  • 参照範囲を設定

という流れになります。

グラフの書式設定について、簡単にご紹介しました。

  • タイトルと凡例の設定
  • 系列の線の色の設定
  • 系列のマーカーの設定
  • 系列のデータラベルの設定

という感じです。

グラフの書式設定は、VBAコードがたくさんあって、結構大変です。

「ベース」となるグラフを作成して、コピーして利用すると、効率的にグラフの操作を自動化できます。

グラフのコピーについて、詳細はこちらでまとめています。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す