【EXCEL】散布図メモ(系列)

# やること
　EXCELで系列名を多く使用する散布図を作成する際のメモをまとめておく。

# 事前確認：Qiitaでの記事
　ここで、以下の検索をしたところ、47件ヒットした。(2024/11/24時点)
 [「EXCEL 散布図 系列 -tag:Python」の検索結果 - Qiita](https://qiita.com/search?sort=&q=EXCEL+%E6%95%A3%E5%B8%83%E5%9B%B3+%E7%B3%BB%E5%88%97+-tag%3APython)
 
　ちなみに、以下の検索をしたところ、83件ヒットした。(2024/11/24時 
 [「EXCEL 散布図 系列」の検索結果 - Qiita](https://qiita.com/search?sort=&q=EXCEL+%E6%95%A3%E5%B8%83%E5%9B%B3+%E7%B3%BB%E5%88%97)

 さらに、以下の検索をしたところ、299件ヒットした。(2024/11/24時点)
[「EXCEL 散布図」の検索結果 - Qiita](https://qiita.com/search?q=EXCEL+%E6%95%A3%E5%B8%83%E5%9B%B3)

　以下、4種類(7件)紹介。なお上記の通り、他言語連携は除き、統計関連も省く。

## グラフの作り方
[Excel 2013 > 散布図を開く > Alt + n, d, [Enter] ##migrated - Qiita](https://qiita.com/7of9/items/be71e5f8ca67077f7c7d)
最終更新日 2017年05月24日　投稿日 2016年12月19日

EXCELで散布図を作成する際に使用するショートカットの紹介。

[Excel > ヘッダ項目があるファイルから時系列グラフ作成 #Procedure - Qiita](https://qiita.com/7of9/items/5b29d15a27ff740858aa)
最終更新日 2018年03月15日　投稿日 2016年06月13日

時系列データを散布図でなく、2D折れ線としてグラフ作成。

## 表示項目
[理系が使ってもそれほど怒られないグラフをExcelで その2 #ExcelVBA - Qiita](https://qiita.com/mori_toma/items/70d9e422b9a3ca88e8b7)
投稿日 2017年02月15日
[理系が使ってもそれほど怒られないグラフをExcelで その3 #ExcelVBA - Qiita](https://qiita.com/mori_toma/items/8281596a2537fdc8cd56)
投稿日 2017年02月17日
[Excelのグラフの近似曲線のラベルを任意の角度に傾ける、他 #初心者 - Qiita](https://qiita.com/mori_toma/items/a3905de2ae4397c830db)
投稿日 2017年02月23日
分布図の表示項目の設定変更。


## csvファイルからグラフ化
[Excel VBAで複数項目の時系列csvファイルをグラフ化 #ExelVBA - Qiita](https://qiita.com/mtakee/items/fcf1ba533fcdd47fa31a)
最終更新日 2024年04月25日　投稿日 2024年04月24日
csvの時系列データのグラフ化マクロ。

## VBA関連
[vba グラフの作る方法 #Excel - Qiita](https://qiita.com/asterisk9101/items/7ca75226d3ab2ba2fa55)
最終更新日 2015年06月20日　投稿日 2015年06月20日
VBAでグラフを作る方法。

# メモ：１つずつ系列にする
例えばこの様なデータを散布図で表示する。
| 1 | 2 | 3 |
|:-:|:-:|:-:|
| A | 0.4476 | 0.4074 |
| D65 | 0.3127 | 0.3290 |
| C| 0.3101 | 0.3162 |

結果
![1_セルの値.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838258/96db024d-3583-4702-db47-44070bb62cfd.jpeg)
このような「セルの値」を利用してラベルを付ける場合が多いかと思います。

課題
「D65を非表示にしたい」といった場合に不便
![2_データソースの選択.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838258/6606af61-eb8a-aabf-e973-1cb78fa027fe.jpeg)
１つの系列にしているので、データ１つだけを非表示にしにくい。

対応
1行ごとに系列へ入力する。
![3_系列名.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838258/4b5cda54-4375-a323-05e3-603402e61edb.jpeg)
データ数が多いと大変なので、これをマクロ化。

```vb:散布図.bas
Attribute VB_Name = "散布図"
Option Explicit

Sub 散布図変更()
    '-----データ並び-----
    ' Sheet1(s_nameで変更可能)に以下のデータ
    ' A列   系列名(1行目は説明)
    ' B列   x軸(1行目は説明)
    ' C列   y軸(1行目は説明)
    ' 行数  変数jに仮置き(データは2行目から故、データ数＝j)
    Dim y_name As String
    y_name = Cells(1, 3)
    Dim s_name As String
    s_name = "Sheet1"
    Dim i As Integer
    Dim j As Long
    j = 3                                               'Cells(Rows.Count, 1).End(xlUp).Row -1
    '-----グラフ作成-----
    With ActiveSheet.Shapes.AddChart.Chart
        .ChartType = xlXYScatter
        .SetSourceData Range(Cells(1, 2), Cells(j + 1, 3))
        .Parent.Name = "散布図1"
    End With
    ActiveSheet.ChartObjects("散布図1").Activate
    '-----系列登録-----
    For i = 2 To j + 1
        ActiveChart.SeriesCollection.NewSeries
        With ActiveChart.FullSeriesCollection(i)
            .Name = "=" & s_name & "!$A$" & i
            .XValues = "=" & s_name & "!$B$" & i
            .Values = "=" & s_name & "!$C$" & i
        End With
    Next i
    '-----グラフ作成で作成された系列削除-----
    ActiveChart.FullSeriesCollection(y_name).Delete
    '-----ラベル変更-----
    For i = 1 To j                                          'j = ActiveChart.FullSeriesCollection.Count
        With ActiveChart.FullSeriesCollection(i)
            .Select                                         'マーカー選択
            .ApplyDataLabels                                'データラベル表示
            .DataLabels.Select                              'データラベル選択
        End With
        Selection.ShowSeriesName = True                     '系列名：表示
'        Selection.ShowCategoryName = False                  'X値：非表示
        Selection.ShowValue = False                         'Y値：非表示
    Next i
    '-----系列グラフ変更-----
    For i = 1 To j
        ActiveChart.FullSeriesCollection(i).Select
        With Selection
            .MarkerStyle = 8                                'Circle
            .MarkerSize = 5
            .MarkerBackgroundColor = RGB(0, 0, 255)         'マーカー塗りつぶし(単色)
            .MarkerForegroundColor = RGB(0, 0, 255)         'マーカー枠線(単色)
        End With
    Next i
End Sub