Page 209 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼散布図について こうき 02/10/15(火) 14:22 ┗Re:散布図について yu-ji 02/10/15(火) 14:53 ┣Re:散布図について こうき 02/10/15(火) 15:15 ┃ ┗Re:散布図について yu-ji 02/10/15(火) 15:55 ┗Re:散布図について こうき 02/10/15(火) 15:57 ┗Re:散布図について yu-ji 02/10/16(水) 10:42 ─────────────────────────────────────── ■題名 : 散布図について ■名前 : こうき ■日付 : 02/10/15(火) 14:22 -------------------------------------------------------------------------
こんにちは。 下のようなシートがあって、年度を横軸、日付を縦軸にした散布図を 作りたいのですが、値や系列がでたらめになってしまいます。 (系列が3つになったり、年度が30000以上になったりします・・・) A B C 1 年度 最大日付 最小日付 2 2000 9/17 10/5 3 2001 11/5 2/6 4 2002 3/5 10/5 マクロ化する以前の問題なのですが、いい方法はないでしょうか? |
▼こうき さん: >下のようなシートがあって、年度を横軸、日付を縦軸にした散布図を >作りたいのですが、値や系列がでたらめになってしまいます。 >(系列が3つになったり、年度が30000以上になったりします・・・) > > A B C >1 年度 最大日付 最小日付 >2 2000 9/17 10/5 >3 2001 11/5 2/6 >4 2002 3/5 10/5 > >マクロ化する以前の問題なのですが、いい方法はないでしょうか? 多分、グラフウィザードの2/4の「グラフの元データ」を自動で入力される 値をそのまま使っている為、上手くいかないと言われているのだと思います。 手動で、ちゃんと指定をしてやれば上手くいきますよ。 手動での設定は、系列タブで、それぞれ設定できます。 上記の例でいうと 最大日付 名前: B1 X : A2:A4 Y : B2:B4 最小日付 名前: C1 X : A2:A4 Y : C2:C4 以上のような設定で、上手くいくと思います。 |
▼yu-ji さん: >手動での設定は、系列タブで、それぞれ設定できます。 > >最大日付 > 名前: B1 > X : A2:A4 > Y : B2:B4 > >最小日付 > 名前: C1 > X : A2:A4 > Y : C2:C4 > >以上のような設定で、上手くいくと思います。 ありがとうございます。 うまくいきました。 ただ、これは手動でないとできないのでしょうか? |
▼こうき さん: >ただ、これは手動でないとできないのでしょうか? 先程書いた”手動”とは、2/4で自動的に(=勝手に)作られるものではなく 自分で設定してくださいという意味で使っただけです。 なので、もちろん手動(=自動化できない)でなく、VBAで設定することもできますよ。 まずは、新しいマクロの記述で、手動の処理を記録して、VBAで参照されると いいと思います。 |
▼yu-ji さん: さきほどの散布図をマクロで作ろうとしたのですが、 Dim monrow As Integer Dim m As Integer For m = 1 To 12 monrow=Cells(m,1) '散布図を挿入する ’系列の変更 ActiveChart.SeriesCollection(1).XValues = Sheets("data"). _ Range(Cells(2, 14 + 3 * m), Cells(monrow, 14 + 3 * m)) ActiveChart.SeriesCollection(1).Values = Sheets("data"). _ Range(Cells(2, 15 + 3 * m), Cells(monrow, 15 + 3 * m)) ActiveChart.SeriesCollection(1).Name = "=""最大日付""" ActiveChart.SeriesCollection(2).XValues = Sheets("data"). _ Range(Cells(2, 14 + 3 * m), Cells(monrow, 14 + 3 * m)) ActiveChart.SeriesCollection(2).Values = Sheets("data"). _ Range(Cells(2, 16 + 3 * m), Cells(monrow, 16 + 3 * m)) ActiveChart.SeriesCollection(2).Name = "=""最小日付""" Next このように書くと、「Cellsメソッドは失敗しました」と出て、 SeriesCollection(1).XValues の段階でとまってしまいます。 何が悪いのでしょうか? |
▼こうき さん: この処理前の記述がないので、それ以外のことは分かりませんが、 エラーが出ているのはXValuesへの代入のミスなので、まずXValuesのヘルプを 見てください。 で、エラーですが、範囲の指定方法が間違ってます。 まず、CellsにはAddressを付けないと、そのセルの値を見に行ってしまいます。 次に複数範囲を指定する場合は、真中に":"をつけないといけません。 ってことで、 >ActiveChart.SeriesCollection(1).XValues = Sheets("data"). _ > Range(Cells(2, 14 + 3 * m), Cells(monrow, 14 + 3 * m)) の場合、 ActiveChart.SeriesCollection(1).XValues = Sheets("data"). _ Range(Cells(2, 14 + 3 * m).Address & ":" & _ Cells(monrow, 14 + 3 * m).Address) という感じになると思います。 |