[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件によって散布図のマーカーの種類を変える』(nexuskt)
A列に名前が名簿のように入力され、B列に身長、C列に体重、D列に性別(男女)が入力されているとします。
この表から、縦軸身長、横軸体重にした散布図を作成します。
この時、プロットはすべて同じ種類のマーカーになると思いますが、例えばこのマーカーを男なら青色、女なら赤色というように(あるいは●か■でもよいですが)表示させることはできないでしょうか。
男と女でソートをかけ、データの選択で追加すればできるような気がしますが、一発で実現させることはできないでしょうか。
よろしくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
それが一番はやいと思います。
(マナ) 2018/08/21(火) 19:55
>データの選択で追加すればできるような気がします ↓なんか良さそうな例があったので貼っておきます。 エクセル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.