Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10640 / 13644 ツリー ←次へ | 前へ→

【20505】散布図を作りたい nogu 04/12/10(金) 16:24 質問[未読]
【20639】Re:散布図を作りたい ni 04/12/13(月) 18:57 発言[未読]
【20681】Re:散布図を作りたい nogu 04/12/15(水) 0:23 発言[未読]

【20505】散布図を作りたい
質問  nogu  - 04/12/10(金) 16:24 -

引用なし
パスワード
   VBA初心者です。よろしくお願いいたします。

sheet1には作りたいグラフが2枚あります。
手がかりは、A列です。"赤"の部分と"青"の部分です。
グラフの種類は、散布図です。
データは下記のとおりです。

  A   B     C    D     E
1 赤    1    2500    ex    28.2%
2 赤    1    5000    wor    38.0%
3 赤    1    7500    ex    100.0%
4 赤    2    15000    wor    43.7%
5 赤    2    30000    ex    62.0%
6 赤    2    60000    wor    59.2%
7 赤    3    2500    ex    100.0%
8 赤    3    5000    wor    12.7%
9 赤    3    7500    ex    43.7%
10 赤    4    15000    wor    0.0%
11 赤    4    30000    ex    0.0%
12 赤    4    60000    wor    0.0%
13 青    5    2500    ex    0.0%
14 青    5    5000    wor    1.4%
15 青    5    7500    ex    0.0%
16 青    6    15000    wor    2.8%
17 青    6    30000    ex    19.7%
18 青    6    5000    wor    0.0%
19 青    7    10000    ex    0.0%
20 青    7    15000    wor    0.0%
21 青    7    30000    ex    4.2%
22 青    8    60000    wor    19.7%
23 青    8    2500    ex    100.0%
24 青    8    5000    wor    0.0%

とりあえず、赤の部分だけのグラフ作成をマクロの記録をしてみました。

Sub Macro1()
  Range("C1:C12,E1:E12").Select
  Charts.Add
  ActiveChart.ChartType = xlXYScatterLines
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("C1:C12,E1:E12"), _
    PlotBy:=xlColumns
  ActiveChart.SeriesCollection.NewSeries
  ActiveChart.SeriesCollection.NewSeries
  ActiveChart.SeriesCollection.NewSeries
  ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R1C3:R3C3"
  ActiveChart.SeriesCollection(1).Values = "=Sheet1!R1C5:R3C5"
  ActiveChart.SeriesCollection(2).XValues = "=Sheet1!R4C3:R6C3"
  ActiveChart.SeriesCollection(2).Values = "=Sheet1!R4C5:R6C5"
  ActiveChart.SeriesCollection(3).XValues = "=Sheet1!R7C3:R9C3"
  ActiveChart.SeriesCollection(3).Values = "=Sheet1!R7C5:R9C5"
  ActiveChart.SeriesCollection(4).XValues = "=Sheet1!R10C3:R12C3"
  ActiveChart.SeriesCollection(4).Values = "=Sheet1!R10C5:R12C5"
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
  With ActiveChart
    .HasTitle = False
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
  End With
End Sub

このグラフで指定したいのが、B列を手がかりに1つ1つ系列のデータを指定したいのです。
表によっては、系列の数が違います。(青のように)

実際のデータはもっとたくさんあるので
なんとか自動化させたいので知恵をお貸し頂けると助かります。

【20639】Re:散布図を作りたい
発言  ni  - 04/12/13(月) 18:57 -

引用なし
パスワード
   こんにちは

>実際のデータはもっとたくさんあるので

1つのグラフの系列の最大数は255ですが、足りますか?

手順としては、

注目行=1
A列注目行の値読み込み、記憶
Do
 B列注目行の値読み込み、開始行番号記憶
 注目行進める
 B列注目行の値が変化したら、1つ前の行を終了行として
 グラフデータを設定 "=Sheet1!R" & 開始行 & "C3:R" & 終了行 & "C3"
Loop While A列注目行の値=最初の値 である間繰り返す
グラフ後処理

というような感じですね。
グラフを作成した時点で、系列が1個出来ているので、
2個目からNewSeriesで系列を追加する判断が必要です。

【20681】Re:散布図を作りたい
発言  nogu E-MAIL  - 04/12/15(水) 0:23 -

引用なし
パスワード
   アドバイスありがとうございます。
今、散布図や折れ線グラフを中心に色々なパターンのグラフ化をしています。

>1つのグラフの系列の最大数は255ですが、足りますか?

今回のグラフでは255は越えないのですが
他のであるのでまた考えないといけないです。。。
教えてくださってありがとうございます。

手順をみて、作成中です。
> グラフデータを設定 "=Sheet1!R" & 開始行 & "C3:R" & 終了行 & "C3"
こんな風に出来るなんて思いもしなかったです。

途方にくれていたので、かなり手ごたえがあります。
もう少しで形になりそうなので、
そのときは、また質問させて下さい。

10640 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free