[[20180821171504]] 『条件によって散布図のマーカーの種類を変える』(nexuskt) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件によって散布図のマーカーの種類を変える』(nexuskt)

A列に名前が名簿のように入力され、B列に身長、C列に体重、D列に性別(男女)が入力されているとします。
この表から、縦軸身長、横軸体重にした散布図を作成します。
この時、プロットはすべて同じ種類のマーカーになると思いますが、例えばこのマーカーを男なら青色、女なら赤色というように(あるいは●か■でもよいですが)表示させることはできないでしょうか。
男と女でソートをかけ、データの選択で追加すればできるような気がしますが、一発で実現させることはできないでしょうか。

よろしくお願いします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


>男と女でソートをかけ、データの選択で追加すればできるような気がしますが、

それが一番はやいと思います。

(マナ) 2018/08/21(火) 19:55


ピボットつかって集計そのままだと散布図にはできないので
集計結果だけ使って散布図にする。
Accessだとかってにクロス集計かかるから一発でおわりそう。
ピボットつかわずにクロス集計できるなら。。。
(水上) 2018/08/22(水) 04:40

私だったらグラフ機能を使わず、Shapes.AddShapeメソッドで1人ずつ○を描いて、散布図のように表現しますね。 色でも形でも、自在に指定できます。(吹き出しで名前表示しても良し) マクロ作成に時間がかかりますが、一度作ってしまえば、後はデータが増えても一発で再描画できます。
(???) 2018/08/22(水) 09:11

 >データの選択で追加すればできるような気がします
 ↓なんか良さそうな例があったので貼っておきます。
エクセル2007の散布図で項目ごとに色分けする方法 性別 身長 … - 人力検索はてな
http://q.hatena.ne.jp/1324356807

 〜 以下余談です 〜

 >一発で
 というのが「単一系列で」という意味と解釈しての話をしますと、
 できないでしょうねぇ...と思います。

 手動にせよ、マクロにせよ、
 >データの選択で追加
 これに近い考え方で組み立てるしか無いかと。

    Sub test()
        Dim d As Range, r As Range
        Dim mX As Range, fX As Range, mY As Range, fY As Range

        Set d = Range("A2:D11") '←データ範囲です。実環境に合せて下さい

        For Each r In d.Rows
            If r.Columns(4) = "男" Then
                If mX Is Nothing Then
                    Set mX = r.Columns(3)
                    Set mY = r.Columns(2)
                Else
                    Set mX = Union(mX, r.Columns(3))
                    Set mY = Union(mY, r.Columns(2))
                End If
            ElseIf r.Columns(4) = "女" Then
                If fX Is Nothing Then
                    Set fX = r.Columns(3)
                    Set fY = r.Columns(2)
                Else
                    Set fX = Union(fX, r.Columns(3))
                    Set fY = Union(fY, r.Columns(2))
                End If
            End If
        Next

        With ActiveSheet.ChartObjects.Add(d.Width, d.Top, 480, 270).Chart
            .ChartType = xlXYScatter
            If Not mX Is Nothing Then
                With .SeriesCollection.NewSeries
                    .Name = "男"
                    .XValues = mX
                    .Values = mY
                End With
            End If
            If Not fX Is Nothing Then
                With .SeriesCollection.NewSeries
                    .Name = "女"
                    .XValues = fX
                    .Values = fY
                End With
            End If
        End With
    End Sub

 仮に上記の様な(ちょっと投遣りな^^;)マクロを例にして考えてみます。

 [男]行と[女]行をそれぞれ別々の変数に記憶させておいて、
 新規散布図を追加し、正に
 >データの選択で追加
 を男女別に2回に分けて行う事で実現している訳で、
 やはり
 >一発で
 という事にはなりません。

 そもそも散布図に複数系列を乗せる
 っていう時点で「一発」が無理なんですね。

 仮に「あくまでも系列は一つだけ」として再現するなら、

 1.先にデータ全体に対して単一系列の散布図を作成しておいて、
 2.個々のマーカーを1つずつスタイル変換していく。

 という組み立てになってしまいますが、
 マーカーひとつひとつに対し、対応する性別を順次判定していく
 って工程な訳ですから、もうね^^;  力技ですよね。

 少なくとも[男][女]の2系列に分かれているべきなのに
 そこを度外視してしまっては本末転倒ですから。

(白茶) 2018/08/22(水) 09:16


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.