• 締切済み

初心者です。SeriesCollection(i)はどのように使うのでしょうか

Sheets("推移グラフ").Select ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(1).XValues = Worksheets(Zsheet2).Range(xrenge1) ActiveChart.SeriesCollection(1).Values = Worksheets(Zsheet2).Range(yrenge1) ActiveChart.SeriesCollection(2).XValues = Worksheets(Zsheet2).Range(xrenge1) ActiveChart.SeriesCollection(2).Values = Worksheets(Zsheet2).Range(yrenge2) ActiveChart.SeriesCollection(3).XValues = Worksheets(Zsheet2).Range(xrenge1) ActiveChart.SeriesCollection(3).Values = Worksheets(Zsheet2).Range(yrenge3) ActiveChart.Deselect に折れ線を1本追加したいのですが、SeriesCollectionの使い方がわかりません。SeriesCollection(i)のiは1~3しか使えないのでしょうか。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

初心者には、一般的にグラフのVBAは難しい上に、本件は難しかった。 試行錯誤の上で下記報告する。 >SeriesCollection(i)はどのように使うのでしょうか 聞き方がピントハズレ。グラフでデータ系列がありグラフを描けば、VBA的にはSeriesCollection(i)で決まるオブジェクトができるのだから、VBA的に使うのも、手作業でやるも自由なので、使わなくてもグラフを修正したりできる。 系列をVBAで指定するとき使うぐらいしか言い様が無いのでは >SeriesCollection(i)のiは1~3しか使えないのでしょうか 4系列以上のグラフも当然(手操作で)描かせることができるのだから、そういうグラフを描けば、存在しますよ。 ーー >折れ線を1本追加したいのですが 例データ  A1:E4 X Y Z W a 12 4 21 17 b 21 15 31 8 c 15 24 6 13 というデータを仮に作った。 手作業で、挿入ーグラフー折れ線ー完了でグラフを描かせる。 3本の折れ線が描かれる。(グラフはここに紹介できないが) ーー データを X Y Z W a 12 4 21 17 b 21 15 31 8 c 15 24 6 13 d 12 32 18 6  <-追加行 と第5行目に追加。 ーー Moduke1に Sub Macro4() Set mschart1 = ActiveSheet.ChartObjects(1) MsgBox mschart1.Name mschart1.Activate n = ActiveChart.SeriesCollection.Count MsgBox n ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(n + 1).Values = "=Sheet1!R5C2:R5C5" ActiveChart.SeriesCollection(n + 1).Name = "=Sheet1!R5C1" End Sub と入れて、実行する。 これで元の3本の折れ線に加え、4本目のグラフが描かれた。 (Msgbox  は納得できればいずれ削除のこと。)

asushinjoe
質問者

お礼

imogasiさん  ご丁寧な回答をありがとうございました。  

関連するQ&A

  • グラフ可変範囲のデータ設定

    環境Excel2002です グラフ 1が棒グラフ2個、折れ線グラフ1個で作成されています Sheets("支社")に8支社のデータがあります グラフシートは1Sheetにしたいので グラフシートで支社を選択することにより Sheets("支社")の該当支社のグラフデータを取得します そうすると、グラフデータは可変範囲で設定することになります そのVBAが下記です ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).Select With ActiveChart.SeriesCollection(1) .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) .Values = Sheets("支社").Range(Cells(497, i + 1), Cells(497, i + 12)) End With .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) のところで実行時エラー1004がでてしまいます エラー回避方法を教えてください

  • エクセルのグラフの操作

    エクセルのグラフの操作 初歩的でスミマセンが、よろしくお願いします。 エクセルのグラフのデータの内容を1セルずつ下に下げて、それを400回繰り返したいんです。 'wave-h'!R402C3と'wave-h'!R402C4を 'wave-h'!R403C3と'wave-h'!R403C4にして 'wave-h'!R867C3と'wave-h'!R867C4にまでしたいのですが。 do loopを考えてるんですが、引数?が上手くいかなくて・・・。 ついでにその後グラフをコピーしてペイントに貼り付けてJPGで保存する予定です。 これを400回以上繰り返すんですが、ペイントのコピーのところまではエクセルのVBAで可能でしょうか。よろしくお願いします。 ActiveSheet.ChartObjects("グラフ 4").Activate ActiveChart.SeriesCollection(2).Select ActiveChart.SeriesCollection(2).XValues = "='wave-h'!R402C3" ActiveChart.SeriesCollection(2).Values = "='wave-h'!R402C4" ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(2).Select ActiveChart.ChartArea.Select ActiveChart.ChartArea.Copy

  • VBAのグラフに違うシートの系列の追加について??

    VBAでグラフに新たな系列を追加しようと思い 以下のプログラムを書きました。 しかしながら、 . Valuesの値の指定の場所でエラーが発生しました。 また、 .XValues = Sheets(シート名(o)).Range(Cells(2, 1), Cells(行の数 + 1, 1)) .Values = Sheets(シート名(o)).Range(Cells(2, p + 1), Cells(行の数 + 1, p + 1)) を .XValues = Range(Cells(2, 1), Cells(行の数 + 1, 1)) .Values = Range(Cells(2, p + 1), Cells(行の数 + 1, p + 1)) に直すとうまくいきました。 別のシートの値をグラフに設定する方法がわかっていないみたいなのですが、 やり方がよくわかりません。 もし、わかる方がいたら教えていただけないでしょうか? よろしくお願いします。 以下、書いたプログラムです。 o=2 ActiveSheet.ChartObjects("グラフ1 " ).Activate ActiveChart.SeriesCollection.NewSeries 'グラフの種類・データの範囲・凡例・2軸の使用を指定します With ActiveChart.SeriesCollection(o) 'グラフの種類を設定 折れ線グラフ .ChartType = xlXYScatterLines 'データの指定 .XValues = Sheets(シート名(o)).Range(Cells(2, 1), Cells(行の数 + 1, 1)) '←ここでエラーが出ます。 .Values = Sheets(シート名(o)).Range(Cells(2, p + 1), Cells(行の数 + 1, p + 1)) '凡例の指定 .Name = シート名(o) End With

  • グラフマクロで系列を変数にする方法を教えてください

    エクセルのグラフマクロについて質問します。 系列のxの値(Yの値も)の設定で、 グラフ化したいワークシートと範囲を変数にすることはできますか? 目的は、複数あるシートの複数のセルをグラフ化したい、というものです。 変数にてシート名と範囲を指定したいです。 ↓のようなプログラムを作成してみましたが、どうもうまく動きません。 12行目で止まってしまいます。 13行目はでたらめですが、範囲も変数bにできないかなぁと、勝手にイメージで作ってみました。 Sub () n = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To n Sheets("SHEET1").Select Range("A" & i).Select a = ActiveCell.Value Sheets(a).Select Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets(a).Range("V22") ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=sheets(a)!R2C4:R5C4" ActiveChart.SeriesCollection(1).Values = "=sheets(a)!range(b)" ActiveChart.Location Where:=xlLocationAsObject, Name:=Sheets(a) Next i End Sub 当方、マクロかじりたての初心者です。 どなたか、よろしくおねがいします!

  • Excel VBAの散布図について

    Excel VBAで散布図を作ろうと考えています。 元のデータは添付した画像のものです。 左端にXの値があって、それ以降7列ごとに8枚の散布図を作成しようと考えております。 そこで、kを1~8まで動かし8種類の散布図を作成しようと考えているのですが、このマクロではk=1だけプログラムを回しただけで、一枚のグラフにすべての系列が載ってしまいます。 kを動かさずに、Cellの位置を指定して回した際にはうまくいったのですが、kを動かすようにしたところうまくいきません。 散布図を作る際に系列の数(私の場合7種類)を指定するにはどうしたらよいでしょうか。 どなたかご教授ください。 For k = 1 To 8 ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatter ActiveChart.SeriesCollection(1).Name = Sheets("Voltammogram").Cells(10, -5 + 7 * k) ActiveChart.SeriesCollection(1).XValues = "=Voltammogram!$A$12:$A$250" ActiveChart.SeriesCollection(1).Values = Sheets("Voltammogram").Range(Cells(12, -5 + 7 * k), Cells(250, -5 + 7 * k)) ActiveChart.SeriesCollection(2).Name = Sheets("Voltammogram").Cells(10, -4 + 7 * k) ActiveChart.SeriesCollection(2).XValues = "=Voltammogram!$A$12:$A$250" ActiveChart.SeriesCollection(2).Values = Sheets("Voltammogram").Range(Cells(12, -4 + 7 * k), Cells(250, -4 + 7 * k)) 以降7列まで続きます。

  • グラフの参照元を相対参照で記述するには

    マクロ初心者です。 あるグラフを最初テンプレートで作っておいて、他のデータでも簡単に同じグラフを作れるようにしたいです。 マクロの記録で「相対参照」があったので、これでできると思ったのですが、グラフのセルは絶対参照になるようです。下記のようになってりまいます。 Sub Macro6() ' ' Macro6 Macro ' ' ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveCell.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).XValues = "='Sheet1'!J3:J11" ActiveChart.SeriesCollection(1).Values = "='Sheet1'!M3:M11" ActiveChart.SeriesCollection(2).XValues = "='Sheet1'!J3:J11" ActiveChart.SeriesCollection(2).Values = "='Sheet1'!P3:P11" ActiveCell.Select End Sub 具体的にやりたい動作は、 1.相対的な場所を決定するセルを選択(表の左上のセルなど) 2. ActiveChart.SeriesCollection(1).XValues = "='1.のセルから右に2列進んだセル:1.のセルから右に2列下に8列進んだセル" ActiveChart.SeriesCollection(1).Values = "='1.のセルから右に4列進んだセル:1.のセルから右に4列下に8列進んだセル" ActiveChart.SeriesCollection(2).XValues = "='1.のセルから右に2列進んだセル:1.のセルから右に2列下に8列進んだセル" ActiveChart.SeriesCollection(1).Values = "='1.のセルから右に6列進んだセル:1.のセルから右に6列下に8列進んだセル" というふうにしたいです。 ご指導お願いします。

  • マクロでグラフを作成したい

    Charts.Add ActiveChart.ChartType = xlXYScatterLinesNoMarkers For i = 1 To 25    ActiveChart.SeriesCollection.NewSeries    ActiveChart.SeriesCollection(i).XValues = "=APC!"(3,X)":"Range(lngYCut,X)    ActiveChart.SeriesCollection(i).Values = "=APC!Cells(3,Y):Cells(lngYCut,Y)"    ActiveChart.SeriesCollection(i).Name = "=APC!R1C&X"  X = i * 3 + 1   Y = i * 3 + 2 Next 上記のプログラムでグラフを作成しています。(X,Y,lngYCutは事前に定義しています。) 25個のデータをグラフにする為、For文の中でグラフデータを1つずつ追加していこうと思っています。 データ範囲を変数で指定したいため、=のあとを変えないといけないと思っています。 ただ=のあと""で囲っているため、文字として入力しているんだと思います。 その文字列として入力している場所にどうにかして変数を使いたいです。 どなたか ActiveChart.SeriesCollection(i).XValues = のあとに変数を使用できる方法を教えてください

  • Excel VBA グラフ作成のときのエラー

    VBA初心者です。Excel2003を使っています。 Sheet1に作りたいグラフがあります。 データは下記のとおりです。 ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A")のところで、「実行時エラー13 型が一致しません」とエラーがでます。 不思議なのは、昨日は動いていたのです。 なぜ、エラーが出るようになったのかわかりません。 ご教授よろしくお願いします。 A B 1 a 1 2 2 3 3 4 4 5 5 6 b 6 7 7 8 8 9 9 10 10 11 c 11 12 12 13 13 14 14 15 15 Sub test() Wrow = Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To Wrow If Worksheets("sheet1").Cells(i, "A").Value = "a" Then a_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "b" Then b_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "c" Then c_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "d" Then d_data = Worksheets("sheet1").Cells(i, "A").Row End If Next Sheets("sheet1").Select Range(Cells(a_data, "B"), Cells(b_data, "B")).Select ActiveSheet.ChartObjects.Add(30, 10, 500, 200).Select ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(a_data, "B"), Cells(b_data - 1, "B")), PlotBy:=xlColumns ActiveChart.Location where:=xlLocationAsObject, Name:="sheet1" Sheets("sheet1").Select ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A") ←エラーがでます。 ActiveChart.SeriesCollection(2).Values = Range(Cells(b_data, "B"), Cells(c_data, "B")) ActiveChart.SeriesCollection(2).Name = Cells(b_data, "A") ActiveChart.SeriesCollection(3).Values = Range(Cells(c_data, "B"), Cells(d_data, "B")) ActiveChart.SeriesCollection(2).Name = Cells(c_data, "A") End Sub

  • Excel 2000でデータ量が493行 列が「AW」迄のサイズが96

    Excel 2000でデータ量が493行 列が「AW」迄のサイズが966KB グラフが2個で その内の1個(グラフ24)を マクロ(下記のコマンド)を組んで 1週間に1度 5日分ずつ移動させています 問題なく動作して使えていたのですが 此処の所でマクロ動作は完了してグラフデータも5日分移動して上書き保存できるので 正常完了だと思うのですが 次に開く時に通常より時間が掛かって「Microsoft Excel Windows」の小さな画面で「問題が発生したため、Microsoft Excel for Windowsを終了します。ご不便をおかけして申し訳有りません。」の画面が出てエラー報告を「送信しない」をクリックすると終了します 以後何度やっても同じ経過になり 結局開けなくなりました 他にコメントが何も出ず 困惑しているのですが「エラー報告に含まれるデータ」の参照とか 何かの方法で原因を調べる方法を御存知の方がいれば アドバイスを戴きたいので投稿しました 宜しくお願い致します hjm$ = Range("a3") - 60: owr$ = Range("a4") ' ActiveSheet.ChartObjects("グラフ 24").Activate ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(1).XValues = "=Data!R" + hjm$ + "C1:R" + owr$ + "C1" ActiveChart.SeriesCollection(1).Values = "=Data!R" + hjm$ + "C42:R" + owr$ + "C42" ActiveChart.SeriesCollection(2).XValues = "=Data!R" + hjm$ + "C1:R" + owr$ + "C1" ActiveChart.SeriesCollection(2).Values = "=Data!R" + hjm$ + "C43:R" + owr$ + "C43" ↓ (3)~(6)までのコマンド記述省略 ActiveChart.SeriesCollection(7).XValues = "=Data!R" + hjm$ + "C1:R" + owr$ + "C1" ActiveChart.SeriesCollection(7).Values = "=Data!R" + hjm$ + "C48:R" + owr$ + "C48" ActiveChart.SeriesCollection(8).XValues = "=Data!R" + hjm$ + "C1:R" + owr$ + "C1" ActiveChart.SeriesCollection(8).Values = "=Data!R" + hjm$ + "C49:R" + owr$ + "C49"

  • VBA:2つの異なるシートからグラフを作成する

    VBA初心者です。(はじめてから3日目。。。) もしかすると、すごい簡単なことなのかもしれなくて申し訳ないのですが、質問させてください。 二つの異なるシートのデータを使って、円グラフを作製しようとしています。 ですが、「アプリケーション定義またはオブジェクト定義のエラー」が出てしまいます。 どこが間違っているのかをご教授願えませんでしょうか。 よろしくお願いします。 Sub graph() Charts.Add With ActiveChart .ChartType = xlPie .SeriesCollection(1).XValues = Worksheets(1).Range(Cells(2, 3), Cells(2, 5)) .SeriesCollection(1).Values = Worksheets(2).Range(Cells(3, 2), Cells(3, 4)) .SeriesCollection(1).Name = Worksheets(1).Cells(1, 1) .Location where:=xlLocationAsObject, Name:="sheet3" End With End Sub ちなみに、各セルにはちゃんとデータが入っております。 よろしくお願いいたします。

専門家に質問してみよう