March 23, 2014

ExcelでX-Yのペアのデータ複数組を一気に散布図グラフに仕上げるには

時系列のデータなどを取り扱うときに、必ずしもX軸が共通の刻みでない場合がある。その場合は、X-Yのペアでデータを扱うのだが、Excelのグラフにする場合に、データ範囲の設定が面倒だ。
そういう時に、少し簡単にグラフにするマクロ 。

複数のシートに、それぞれXYデータがある場合
http://foundknownanddone.blogspot.com/2014/03/excel-vba3d.html

使い方

  • セル範囲を選ぶ
  • マクロを実行する
セル範囲の列をX1、Y1、X2、Y2…として使った散布図を描画する。

コード


Sub createChartwithMultiXYdata()
'X軸データ、Y軸データの列が交互に並んだ選択範囲から散布図を作成するマクロ
'使用方法:セル範囲を選択→このマクロを実行→グラフが作成される。
 
    Dim targetSeries As Series
    Dim dest As String
    Dim data As Range
     
    'シート名を退避しておく(埋め込みグラフにする時に移動先)
    dest = ActiveSheet.Name
    Set data = Selection
     
    'グラフ作成
    With Charts.Add
        .ChartType = xlXYScatterLines
        .Location Where:=xlLocationAsObject, Name:=dest
            '埋め込みグラフにしたくない場合は上の行を消す
    End With
         
    '系列にデータを設定(データはX、Yの順番で列ごとに並んでいる必要あり)
    For i = 1 To data.Columns.Count / 2
        If i > ActiveChart.SeriesCollection.Count Then
            Set targetSeries = ActiveChart.SeriesCollection.NewSeries
        Else
            Set targetSeries = ActiveChart.SeriesCollection(i)
        End If
        
        targetSeries.XValues = data.Columns(i * 2 - 1)
        targetSeries.Values = data.Columns(i * 2)
    Next
     
    '余った系列を削除(セル範囲を選んで開始しているので、勝手に系列が出来てしまう。)
    For i = data.Columns.Count / 2 + 1 To ActiveChart.SeriesCollection.Count
        ActiveChart.SeriesCollection(data.Columns.Count / 2 + 1).Delete
    Next
End Sub

変更履歴

2014/3/23 初版
2014/3/30 プロシージャ名変更、Columnsを使って簡略な表記にした。

No comments :

Post a Comment