Excelで1枚のグラフに複数のデータの散布図を描くVBAマクロ


上図のA列をY軸方向、B, C, D, E列をX軸方向のデータとして1枚のグラフに4本の散布図をプロットする最小限のコード。軸の設定とかは書いていない。複数データの散布図を同時に1枚のグラフの上に描く方法の解説が意外にウェブ上に無かったのでメモ。手許の環境は Windows 7 + Office 2010 のデフォルト設定。こんなものいちいち覚えてられない。

Option Explicit
Sub drawMultipleXYScatterGraph()
    Dim i As Integer, iColumn As Integer
    Dim iRowStart As Integer, iRowEnd As Integer, iRowOffset As Integer
    Dim r As Range
    Set r = ThisWorkbook.ActiveSheet.Range("A1") ' セル位置計算の起点の設定
    With ActiveSheet.ChartObjects.Add(10, 10, 360, 270).Chart
        .ChartType = xlXYScatterLines
            ' ↑Excel2010の [挿入]=>[グラフ]=>[散布図] に相当する。
        iRowOffset = 1
        For i = 1 To 4
            iRowStart = 1 + iRowOffset
            iRowEnd = 10 + iRowOffset
            iColumn = i + 1
            .SeriesCollection.NewSeries 'Excel:系列の設定、自動で1から系列番号が振られる
                ' ↑Excel2010の [グラフツール]=>[デザイン]=>[データの選択]
                '    =>[データソースの選択]ウィザード=>[追加(A)] に相当する
            With .SeriesCollection(i)
                ' ↑Excel2010の [グラフツール]=>[デザイン]=>[データの選択]
                '    =>[データソースの選択]ウィザード=>[系列i] に相当する
                .Name = Range(r.Cells(iRowOffset, iColumn), r.Cells(iRowOffset, iColumn))
                .Values = Range(r.Cells(iRowStart, 1), r.Cells(iRowEnd, 1))
                .XValues = Range(r.Cells(iRowStart, iColumn), r.Cells(iRowEnd, iColumn))
            End With
        Next i
    End With
End Sub