大体でIT

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

大体でIT

Excel VBAで、配列からグラフを作成する方法について、ご紹介します。配列からグラフを作成するには、「NewSeries」を使って、「系列を追加する」という方法を使います。ただ、配列をセルに入力してもいいのであれば、「配列をセルに入力」した方が簡単にグラフを作成できます。

はじめに

この記事では、配列からグラフを作成する方法について、ご紹介します。

配列からグラフを作成するには、「.NewSeries」を使って、「系列を追加する」という方法を使います。

配列をセルに入力してもいいのであれば、配列を一旦セルに入力して、グラフを作成した方が簡単ですし、変更もしやすくなります。

では、配列からグラフを作成する方法について、解説していきます。

この記事で紹介すること

  • 配列からグラフを作成する方法

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

目次

VBAで配列からグラフを作成する

VBAで配列からグラフを作成してみます。

配列からグラフを作成してみる

配列からグラフを作成するVBAコードです。

ポイントは、「.NewSeries」を使って、「系列を追加」していくことです。

手順としては、

  • 配列を作成
  • グラフを挿入
  • グラフの種類を設定
  • 1系列目を追加
  • 2系列目を追加
  • 3系列目を追加
  • 凡例を追加
  • タイトルを追加

という感じです。

Sub TEST1()
    
    Dim A0, A1, A2
    Dim Kei, X
    
    '配列を作成
    X = Array("いちご", "キウイ", "バナナ")
    Kei = Array("大阪", "東京", "名古屋")
    A0 = Array(1000, 400, 200) '大阪
    A1 = Array(300, 100, 1000) '東京
    A2 = Array(2000, 800, 300) '名古屋
    
    'グラフ挿入
    ActiveSheet.Shapes.AddChart2.Select
    ActiveChart.ChartType = xlColumnClustered '集合縦棒
    
    '「1つ目」の系列を追加
    With ActiveChart.SeriesCollection.NewSeries
        .XValues = X '= Array("いちご", "キウイ", "バナナ")
        .Name = Kei(0) '「大阪」
        .Values = A0 '= Array(1000, 400, 200)
    End With
    
    '「2つ目」の系列を追加
    With ActiveChart.SeriesCollection.NewSeries
        .Name = Kei(1) '「東京」
        .Values = A1 '= Array(300, 100, 1000)
    End With
    
    '「3つ目」の系列を追加
    With ActiveChart.SeriesCollection.NewSeries
        .Name = Kei(2) '「名古屋」
        .Values = A2 '= Array(2000, 800, 300)
    End With
    
    ActiveChart.HasLegend = True '凡例を表示
    ActiveChart.Legend.Position = xlLegendPositionBottom '下に設置
    
    ActiveChart.HasTitle = True 'タイトルを表示
    ActiveChart.ChartTitle.Text = "売上"
    
End Sub

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

配列からグラフを作成できた

VBAで配列からグラフを作成できました

VBAで配列からグラフを作成できました。

1つずつ手順を追って、VBAコードの実行結果をみてみましょう。

配列を作成

最初に、配列を作成しておきます。

配列からグラフを作成したい場合を考えているので、既に配列は作成されているかと思います。

配列のデータがある場合は、「グラフ用」の配列に組み直す感じですね。

Sub TEST2()
    
    Dim A0, A1, A2
    Dim Kei, X
    
    '配列を作成
    X = Array("いちご", "キウイ", "バナナ")
    Kei = Array("大阪", "東京", "名古屋")
    A0 = Array(1000, 400, 200) '大阪
    A1 = Array(300, 100, 1000) '東京
    A2 = Array(2000, 800, 300) '名古屋
    
End Sub

とういう感じで、「X軸のラベル」、「系列の名前」、「系列のデータ」用の配列を作成しています。

グラフを挿入

グラフを挿入して、グラフの種類を設定します。

「.AddChart2」でグラフを挿入です。

グラフの種類は、「.ChartType」で設定します。

Sub TEST3()
    
    'グラフ挿入
    ActiveSheet.Shapes.AddChart2.Select
    ActiveChart.ChartType = xlColumnClustered '集合縦棒
    
End Sub

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

グラフが挿入される

VBAでグラフが挿入されました

VBAでグラフが挿入されました。

1つ目の系列を追加

系列を追加していきます。

まずは、1つ目の系列を追加です。

「横軸ラベル」は、「.XValues」に配列を入力します。

系列の「名前」は、「.Name」に入力です。

系列の「値」は、「.Values」に入力します。

Sub TEST4()
    
    '「1つ目」の系列を追加
    With ActiveChart.SeriesCollection.NewSeries
        .XValues = X '= Array("いちご", "キウイ", "バナナ")
        .Name = Kei(0) '「大阪」
        .Values = A0 '= Array(1000, 400, 200)
    End With
    
End Sub

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

1つ目の系列が追加される

VBAで1つ目の系列が追加されました

VBAで1つ目の系列が追加されました。

系列の「XValues」「Name」「Values」の箇所は、こんな感じです。

系列の「XValues」「Name」「Values」の箇所

系列の「XValues」「Name」「Values」の箇所です

「X軸のラベル」の「XValues」は、最初だけ設定します。

2系列目以降は、「Name」「Values」を追加していきます。

2つ目の系列を追加

2つ目の系列を追加します。

系列の「名前」の設定で「.Name」と、系列の「値」の「.Values」を設定します。

Sub TEST5()
    
    '「2つ目」の系列を追加
    With ActiveChart.SeriesCollection.NewSeries
        .Name = Kei(1) '「東京」
        .Values = A1 '= Array(300, 100, 1000)
    End With
    
End Sub

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

2つ目の系列が追加される

VBAで2つ目の系列が追加されました

VBAで2つ目の系列が追加されました。

3つ目の系列を追加

3つ目の系列を追加します。

先ほどとの2つ目の系列と同じです。

系列の「名前」の設定で「.Name」と、系列の「値」の「.Values」を設定します。

Sub TEST6()
    
    '「3つ目」の系列を追加
    With ActiveChart.SeriesCollection.NewSeries
        .Name = Kei(2) '「名古屋」
        .Values = A2 '= Array(2000, 800, 300)
    End With
    
End Sub

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

3つ目の系列が追加される

VBAで3つ目の系列が追加されました

VBAで3つ目の系列が追加されました。

凡例を下に表示

「凡例」を下に表示します。

配列からグラフの作成だけなら、特に設定する必要はありません。

「.HasLegend = True」で凡例を表示して、「.Legend.Position」で凡例の位置を指定します。

Sub TEST7()
    
    ActiveChart.HasLegend = True '凡例を表示
    ActiveChart.Legend.Position = xlLegendPositionBottom '下に設置
        
End Sub

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

凡例が下に表示される

VBAで凡例が下に表示されました

VBAで凡例が下に表示されました。

タイトルを表示

ついでに、「タイトル」の設定もやっておきます。

「.HasTitle = True」でタイトルを表示して、「.ChartTitle.Text」でタイトルのテキストを設定します。

Sub TEST8()

    ActiveChart.HasTitle = True 'タイトルを表示
    ActiveChart.ChartTitle.Text = "売上"
    
End Sub

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

タイトルが表示される

VBAでタイトルが表示されました

VBAでタイトルが表示されました。

という感じで、「配列」からグラフを作成することができます。

セルに入力してグラフを作成してもいいかも

配列からグラフを作成したい場合は、配列を「セルに入力して」グラフを作成してもいいかもしれません。

セルに入力すると、値の確認が簡単なので、変更や修正がやりやすくなります。

参考までに記載しておきます。

配列をセルに入力してグラフを作成

配列をセルに入力してグラフを作成してみます。

手順としては、

  • 配列を作成
  • 配列をセルに入力
  • グラフを作成
  • グラフの種類を設定
  • 凡例の設定
  • タイトルの設定

という感じです。

セルに入力してしまえば、「グラフの作成」が簡単になります。

Sub TEST9()
    
    Dim A0, A1, A2
    Dim Kei, X
    
    '配列を作成
    X = Array("いちご", "キウイ", "バナナ")
    Kei = Array("大阪", "東京", "名古屋")
    A0 = Array(1000, 400, 200) '大阪
    A1 = Array(300, 100, 1000) '東京
    A2 = Array(2000, 800, 300) '名古屋
    
    '配列をセルに格納
    ActiveSheet.Range("B1").Resize(, UBound(X) + 1) = X 'X軸のデータ
    ActiveSheet.Range("A2").Resize(UBound(A0) + 1) = WorksheetFunction.Transpose(Kei) '系列の名前
    ActiveSheet.Range("B2").Resize(, UBound(A0) + 1) = A0 '1つ目の系列のデータ
    ActiveSheet.Range("B3").Resize(, UBound(A1) + 1) = A1 '2つ目の系列のデータ
    ActiveSheet.Range("B4").Resize(, UBound(A2) + 1) = A2 '3つ目の系列のデータ
    
    'グラフを作成
    ActiveSheet.Range("A1").Select 'データを選択
    ActiveSheet.Shapes.AddChart2.Select 'グラフを挿入
    ActiveChart.ChartType = xlColumnClustered '集合縦棒グラフに変更
    
    '凡例
    ActiveChart.HasLegend = True '凡例を表示
    ActiveChart.Legend.Position = xlLegendPositionBottom '下に設置
    
    'タイトル
    ActiveChart.HasTitle = True 'タイトルを表示
    ActiveChart.ChartTitle.Text = "売上"
    
End Sub

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

配列をセルに入力してグラフを作成できた

VBAで配列をセルに入力してグラフを作成できました

VBAで配列をセルに入力してグラフを作成できました。

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

配列を作成

最初に配列を作成しておきます。

これは、先ほどと同じデータを使います。

Sub TEST10()
    
    Dim A0, A1, A2
    Dim Kei, X
    
    '配列を作成
    X = Array("いちご", "キウイ", "バナナ")
    Kei = Array("大阪", "東京", "名古屋")
    A0 = Array(1000, 400, 200) '大阪
    A1 = Array(300, 100, 1000) '東京
    A2 = Array(2000, 800, 300) '名古屋
    
End Sub

「X軸のデータ」、「系列の名前」、「系列のデータ」の配列を作成しています。

配列をセルに入力

配列をセルに入力していきます。

Sub TEST11()
    
    '配列をセルに格納
    ActiveSheet.Range("B1").Resize(, UBound(X) + 1) = X 'X軸のデータ
    ActiveSheet.Range("A2").Resize(UBound(A0) + 1) = WorksheetFunction.Transpose(Kei) '系列の名前
    ActiveSheet.Range("B2").Resize(, UBound(A0) + 1) = A0 '1つ目の系列のデータ
    ActiveSheet.Range("B3").Resize(, UBound(A1) + 1) = A1 '2つ目の系列のデータ
    ActiveSheet.Range("B4").Resize(, UBound(A2) + 1) = A2 '3つ目の系列のデータ
    
End Sub

一つずつ、VBAコードを実行していきます。

「X軸のデータ」が入力される

VBAで「X軸のデータ」が入力されました

VBAで「X軸のデータ」が入力されました。

「系列の名前」が入力される

VBAで「系列の名前」が入力されました

VBAで「系列の名前」が入力されました。

「1つ目の系列」が入力される

VBAで「1つ目の系列」が入力されました

VBAで「1つ目の系列」が入力されました。

「2つ目の系列」が入力される

VBAで「2つ目の系列」が入力されました

VBAで「2つ目の系列」が入力されました。

「3つ目の系列」が入力される

VBAで「3つ目の系列」が入力されました

VBAで「3つ目の系列」が入力されました。

配列を、セルに入力できました。

グラフを挿入

次に、グラフを挿入します。

「.AddChart2」を使って、グラフを挿入します。

グラフの種類は、「.ChartType」で設定します。

Sub TEST12()
    
    'グラフを作成
    ActiveSheet.Range("A1").Select 'データを選択
    ActiveSheet.Shapes.AddChart2.Select 'グラフを挿入
    ActiveChart.ChartType = xlColumnClustered '集合縦棒グラフに変更
    
End Sub

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

グラフが作成される

VBAでグラフが作成されました

VBAでグラフが作成されました。

凡例を下に表示

凡例を下に表示するVBAコードです。

ただ、デフォルトで既に下に表示されているので、やる必要はないですけど、デフォルトが違う場合もありますので、記載しておきます。

「.HasLegend = True」で凡例を表示して、「.Legend.Position」で位置を指定します。

Sub TEST13()
    
    '凡例
    ActiveChart.HasLegend = True '凡例を表示
    ActiveChart.Legend.Position = xlLegendPositionBottom '下に設置
     
End Sub

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

凡例が下に表示される

VBAで凡例が下に表示されました

VBAで凡例が下に表示されました。

タイトルを表示

ついでに、タイトルの設定もしておきます。

「.HasTitle = True」でタイトルを表示して、「.ChartTitle.Text」でテキストを設定します。

Sub TEST14()
    
    'タイトル
    ActiveChart.HasTitle = True 'タイトルを表示
    ActiveChart.ChartTitle.Text = "売上"
    
End Sub

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

タイトルが表示される

VBAでタイトルが表示されました

VBAでタイトルが表示されました。

配列を一旦、セルに入力すると、値が確認しやすいですし、グラフの作成も簡単になります。

おわりに

この記事では、配列からグラフを作成する方法について、ご紹介しました。

配列からグラフを作成するには、「.NewSeries」を使って、「系列を追加する」という方法を使います。

配列をセルに入力してもいいのであれば、配列を一旦セルに入力して、グラフを作成した方が簡単ですし、変更もしやすくなります。

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

関連する記事から探す

カテゴリから探す

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

アーカイブから探す