• ベストアンサー

EXCEL2010 VBA 複数の条件のグラフ

EXCEL2010のVBAでグラフを作成するコードを作成しています。 そのグラフでは指定した値で系列の数が変わります。 初期設定シートで指定値1と2を確認して指定値1が系列の数、指定値2がデータ範囲となります。 データ範囲はB列のB1から指定値2の数だけ下に増えます。 Sheet1にグラフを新規作成します。 (例) 指定値(A1):1の時 指定値(A2):20 グラフに表示される系列:(B1:B20) (例2) 指定値(A1):2の時 指定値(A2):20 グラフに表示される系列:(B1:B20)と(B21:B40) 説明が分かり辛いかもしれませんがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

昨日のマクロの,単純なバリエーションです。 sub macro2()  dim c as chart  dim i, a, b  a = worksheets("Sheet1").range("A1")  b = worksheets("Sheet1").range("A2")  if a * b = 0 then exit sub  worksheets.add  set c = activesheet.shapes.addchart.chart  c.charttype = xllinemarkers  for i = 1 to a  c.seriescollection.add worksheets("Sheet1").range("B1").resize(b, 1).offset((i - 1 )*b)  next i end sub

Not_Pro
質問者

お礼

回答ありがとうございます。 無事にできました。本当にありがとうございました。

Not_Pro
質問者

補足

一か所だけ気になったのですが c.seriescollection.add worksheets("Sheet1").range("B1").resize(b, 1).offset((i - 1 )*b) の部分でrange("B1")となっていますが、これだと繰り返しで2度目や三度目の処理の際にも毎回B1の部分からresizeやoffsetがかかるのではないのですか?理解できずすみません。教えていただけると助かります。

関連するQ&A

  • EXCEL2010 VBA グラフの作成

    EXCEL2010のVBAで自動でグラフを作成するコードを作成したいと思っています。 シート1のA1:A10にデータが入っていて、ボタンを押すとコードが実行されて A1:A5までが系列1 A6:A10までが系列2 として表示される折れ線グラフを作成しようと思っています。 さらに作成したグラフは新規にシートを作成して作成したシートに表示させたいと思います。 このような処理を行いたいのですがVBAを始めたばかりなのでグラフの作成くらいしかまだ 分かっていません。 どなたかこの処理を実現できる良い方法を教えてください。よろしくお願いします。

  • EXCEL2000で、グラフのデータ元を複数の範囲で指定するには??

    続きざまに質問させていただきます。EXCEL2000でグラフを作成するマクロ構文 例)~.Chart.SetSouceData Range(*****),xlColumns で、「*****」の中に入力するデータの範囲が"可変"であり、なおかつ複数の範囲(例えば A1:B5とD1:D5 のように)を指定することをしたいのですが、どのようにすれば、実現ができますでしょうか? Range()の引数はカンマで区切って2コの引数しか使用できません。 ですので、考え方としては、表示したい複数の範囲が収まる一つの範囲として、グラフを作成、→ 表示をしたくないデータ系列を削除する?? でいいのかなぁ??と思ったんですけど私のVBAハンドブックでは全く歯が立たないです。。。どなたかよろしくお願い致します。

  • EXCEL2010 VBA 一つの項目で全て表示

    EXCEL2010のVBAでグラフを作成しています。 シートAに規定値があります。(セルD1) シートA1:A10の売上データを範囲指定して作成した 折線グラフに規定値の値を表示したいと思います。 規定値はセルD1にしか入力されていませんがこれをグラフのA1からA10の部分まで表示させたいと思っています。 一つしかないデータで複数行範囲指定したような風にできないかということです。 説明が下手で分かり辛いですがどなたか良い方法をご教示お願いします。 (例 折線グラフ)         ┃  ___             ┃/   \_/  ←売上データ         ┃______  ←規定値         ┃         ┗━━━━━━━          A1   ~  A10

  • VBAでGANTのグラフを作成したい

    office365 ①GANT_DATAシートに計画と実績のGANTデータ ②GANTシートにガントのグラフを表示 したいです。 ①を元に②のグラフを自動で作成したい ガント表示させる構成は kotei1からkotei6までの計画開始計画終了実績開始実績終了の日時データがあり、Serial1からSerial2,Serial3とGANT_DATAのA列でデータがなくなるまでのガントグラフを表示。 Serialは+30行毎に計画と実績データをデータベースから持ってくる構成。 現状は、GANTシートにひな形としてのグラフを用意しておき、 データ範囲等を1ケ1ケグラフへ反映させてガントのグラフを表示させています。 下記のイメージです。 GANTシートでのSerial1のグラフは グラフデータの範囲:=GANT_DATA!$A$9:$C$20 系列1の系列値:=GANT_DATA!$B$9:$B$20 系列2の系列値:=GANT_DATA!$C$9:$C$20 軸ラベルの範囲:=GANT_DATA!$A$9:$A$20 GANTシートでのSerial2のグラフは グラフデータの範囲:=GANT_DATA!$A$39:$C$50 系列1の系列値:=GANT_DATA!$B$39:$B$50 系列2の系列値:=GANT_DATA!$C$39:$C$50 軸ラベルの範囲:=GANT_DATA!$A$39:$A$50 の様にガントシートのデータ範囲を設定しておき、 GANT_DATAへデータをデータベースから持ってきたらガントのグラフが表示できる構成にしているのですが、グラフの数が増えると上記データ範囲の設定をするのも大変なので、①のシートから②のガントグラフを自動で作成できる様にしたいです。 VBAベタで教えていただきたくよろしくお願いします。 グラフの軸設定はなんとかなると思うので、根本のグラフ表示部分を作成する構成を教えていただけたらと思います ※ GANTグラフには工程間に細く青い線をしきりで入れてます。 これも実現化であれば教えていただきたく。 現状は実線をグラフへコピペで貼り付けています。

  • EXCEL2010 VBA グラフの系列の追加

    EXCEL2010でVBAを使用してグラフを作成しています。 系列の追加まではできているのですが系列名が系列と離れているのでどのように設定しようか悩んでいます。 A1:系列名  A3からA10:系列に使用するデータ というような感じです。 通常は系列名とデータが連なっているのでまとめて範囲選択すればよいと思うのですが。。。 系列名と系列に使用するデータが離れていた場合はどのようなコードにすればよいのでしょうか? どなたかご教示お願いします。

  • excel2010 VBA グラフの目盛の変更

    EXCEL2010のVBAでグラフを作成するコードを作成しております。 コードを実行すると入力シートの値を読み込み、別シートにグラフを複数作成します。 入力シートは最初はデータが入っておらず後から入力します。入力されたデータが反映されて グラフに値が表示されるのですが、目盛は0~値の最高値の少し上くらいまでが表示されます。 これを値が入力シートに入力されてグラフに反映されたら、目盛を表示された値の周辺のみに自動で変更したいのですが何か方法はないでしょうか? (例) データの最小値380       最大値400 目盛を370~410くらいにする

  • VBA(excel)でグラフのデータ範囲の取得

    excel2010の VBA利用者です。 グラフが書いてあって(種類は3D等高線グラフ)、 その元になるデータ範囲は 例えば ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$D$10") のようにすれば、シート1のRange("A1:D10")の範囲が設定できます。  では、  これの 逆に 設定でなくて、取得が出来ませんでしょうか?  つまり 上記の場合でしたら、範囲"A1:D10"を取得して、変数に代入したいのです。 もし、範囲としての取得が難しいならば、最低限 グラフの現在のデータ範囲の矩形範囲の縦横の、行数、列数の 取得だけでもなんとかしたいのですが、 何か方法はないでしょうか? 縦横数百セルの大き目の範囲を相手にしたいので、 Formulaプロパティで系列ごとに取得していく方法では煩雑になるので 何とかもっと 簡便な方法が無いものかと思っております 御教授のほど、よろしくお願いいたします。

  • EXCEL グラフ作成 データの範囲が複数のシートにわたっている場合

    EXCEL グラフ作成方法について シートが3つあり。 それぞれのシートのデータの範囲を指定し統合してグラフを作成したいと考えています。 例; シートが下記の3つ 2004年09月、2004年10月,2004年11月 それぞのシートの中には A列:日付 B列:データ(1) C列:データ(3) データの範囲が複数のシートに月別分かれて、記載されている場合、それぞれのシートの範囲を指定して1つのグラフを作成する方法はありますでしょうか?

  • EXCEL2010 VBA 繰り返し処理

    EXCEL2010でVBAを使用してシートを作成しています。 シート1のA1にヘッダ数・A2に項目数を入力します。 VBAのコードを実行するとA1のヘッダ数が1ならシート2のA列には何も表示せず A2の項目数の分だけB列の14行目から数字を入力していきます。 (例)シート1   A1:1   A2:20  の場合はシート2のB14から20行下まで1~20の値を自動入力させる。   シート2   B14:1   B15:2     ↓   B33:20 シート1のA1が2以上の場合はシート2のA14から、シート1のA2の数値分アルファベットを表示させていきます。 (例)シート1   A1:2   A2:10  の場合シート2のA14:A23に「A」を表示させます。(シート1のA2の数分この場合は10行ずつ)               A24:A33に「B」を表示させます。               B列にはアルファベットごとに数字を1~表示させます。   B14:B23 1~10   B24:B33  1~10 シート1のA1が2なのでA・Bを表示 A1が3だとA・B・C A1が10だとA・B・C・D・E・F・G・H・I・JがA2の数字で区切りながら表示される。 このようなコードを書きたいのですが、どなたかご教示お願いします。

  • 複数のワークシートのデータを使って、1つのグラフを作る方法

    いくつかのワークシートのデータを使って、1つのグラフ(積み上げ縦棒グラフ)を作るいちばん効率的な手順を教えてください。 (Sheet1にはA=1,B=2,Sheet2にはC=3,D=4というようにデータが入っていて、グラフは系列1はAとCの値、系列2はBとDの値…としたいのですが、普通にデータ範囲を指定しようとするとエラーになってしまいます。) 必要なデータを一度1つのシート上に複写する…という方法はできれば避けたいのですが、他に方法がないのであれば、関数やマクロ、ピボットテーブルetcを使って作業を効率化する方法がもしあれば教えていただければうれしいです。

専門家に質問してみよう