VBAによるリアルタイムグラフ作成

このQ&Aのポイント
  • VBAを使用して、あらかじめ作成された散布図のグラフにデータを追加し、リアルタイムにプロットする方法を教えてください。
  • 追加するデータはセルに入力され、自動的にグラフにプロットされます。また、データを消す際にはグラフのデータ系列も一緒に消えるようにしたいです。
  • A列は系列名、B列は横軸、C列は縦軸として使用されます。あらかじめ作成された散布図には閾値をプロットしており、追加されたデータは8から始まります。
回答を見る
  • ベストアンサー

VBAによるリアルタイムグラフ作成

あらかじめ作成されている散布図のグラフにデータを追加しプロットしていきたいと思い、決められたセルに入力されたデータをVBAでグラフにプロットするところまでは何とか作れました。 追加するデータをセルに入力すると自動的に散布図にプロットする方法についてご教示頂けないでしょうか。 ◯データを入力するセル '   A列 B列 C列 '3行  p1 0.5 1.0 '4行  g1 0.8 0.7 '5行 '6行 ・ ・ ・ A列は、系列名でデータラベルとして使用 B列は、横軸 C列は、縦軸 ◯あらかじめ作っている散布図には、閾値を事前に7つのデータ系列をつかってプロットしていますので、追加されたデータのインデックスは8からになります。 ◯追加するデータ数は未知数 ◯可能でしたら、セルに入力されたデータを消すとき、グラフのデータ系列も一緒に消える よろしくお願いします。 Sub グラフ描画() '   A列 B列 C列 '3行  p1 0.5 1.0 '4行  g1 0.8 0.7 '5行 '6行 Dim chartObj As ChartObject Set chartObj = ActiveSheet.ChartObjects(1) With chartObj.Chart ' データセット .SeriesCollection.NewSeries .FullSeriesCollection(8).Name = "=Sheet1!$A$3" .FullSeriesCollection(8).XValues = "=Sheet1!$B$3" .FullSeriesCollection(8).Values = "=Sheet1!$C$3" ' マーク設定 .FullSeriesCollection(8).Format.Fill.Visible = msoTrue .FullSeriesCollection(8).MarkerStyle = xlMarkerStyleCircle .FullSeriesCollection(8).MarkerSize = 6 .FullSeriesCollection(8).Format.Fill.ForeColor.RGB = RGB(255, 0, 0) .FullSeriesCollection(8).Format.Line.Visible = msoTrue .FullSeriesCollection(8).Format.Line.ForeColor.RGB = RGB(255, 0, 0) ' データラベル設定 .FullSeriesCollection(8).ApplyDataLabels .FullSeriesCollection(8).DataLabels.ShowSeriesName = True .FullSeriesCollection(8).DataLabels.ShowValue = False .FullSeriesCollection(8).HasLeaderLines = False .FullSeriesCollection(8).DataLabels.Position = xlLabelPositionAbove End With End Sub

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

  • ベストアンサー
  • kon555
  • ベストアンサー率52% (1754/3367)
回答No.1

ハッキリ言うと、この条件でその動作はおすすめしません。 個人的な経験ですが、セル入力をキーにすると非常に動作が煩雑になり、満足に修正もままならないパターンが多く、特にグラフとの相性は最悪という印象です。 「更新」「消去」などのボタンを追加して、動作トリガーはあくまで入力者が握っておく事をおすすめします。 ただそれでも、という場合もあると思いますので、参考ページのURLだけ https://www.moug.net/tech/exvba/0050131.html ここまで組めたなら、この辺りをご覧になれば自力で充分対応出来ると思います。 ただ繰り返しますが、オススメしません。

kayakayakaya1
質問者

お礼

回答ありがとうございます お礼が遅くなり申し訳ございません。 年度末のためバタバタしており、プログラムを触れておらず結果のご報告ができず申し訳ございません。 データ数が少ないので、自動でもいいかなと思っていましたが、アドバイスを参考にボタンも検討したいと思います。 参考リンク先もありがとうございます

関連するQ&A

  • Excel VBAでグラフ作成。A,C列をx値, B,D列をy値にした複数プロット

    ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。 Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170) With chartObj.Chart .ChartType = xlXYScatterLines .SetSourceData Worksheets(1).Range("A1:F10"), _ PlotBy:=xlColumns .HasLegend = False End With 上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。 以下のようにするにはどうすればよろしいでしょうか。 第一のプロットはx値をA1:A10, y値をB1:B10としてグラフを作成します。次にこのグラフにx値をC1:C10, y値をD1:D10とした第二のプロットを追加、同様に第三はx値をE1:E10, y値をF1:F10としてプロットを追加したグラフを作成したいのですが、このようなグラフはVBAで作成可能でしょうか。 本番のグラフは行数と列数はいろいろな場合があるので、行数と列数のパラメータに任意の値を代入し、Forループで様々な形態に対応できるものを作りたいと考えています。

  • Excelのグラフ(2000)

    お世話になります 教えてください。 EXCEL2000です。 グラフを作成しています。 行のデータ数は39634行あります。 B列に時間、C列に数値があって、それをグラフにしたいのです。 x軸に時間、Y軸に数値にします。 でも、作成しても、エラーが出るのです。 「2-Dグラフで入力できるデータ要素の数は1系列あたり最大32000個です。32000個以上のデータ要素を使用する場合は、複数の系列を作成してください。」 というようなエラーです。 まあ、たしかにデータ数は32000個以上ありますが。。。 これはいったいどういうことでしょうか? じゃあ、2系列作成すればいいのかと、グラフウィザードの、(散布図)系列タブで、「系列」のところに「系列1」しかないのをその下の「追加」ボタンを押して「系列2」を追加しました。 エラーによると、「系列1」だけでは作成されないグラフ分を系列2でおぎなっているのだろうかと思いましたが、出来上がったグラフを見ると、すっかり系列1と系列2が重なっているのです。すっかりわからなくなりました。 デフォルト設定が系列1が青色、2がピンクだったので、 どちらも同じ色にしたいと思いましたが、系列2のほうが上にかさなっていて、おかげで系列1が選択できず、「データ系列の書式設定」をしようにもできません。 すっかりかさなっているグラフをそれぞれの系列を選択するにはどうしたらよいでしょうか? グラフをきちんと作成するにはどうしたらよいでしょうか?2系列?うまくつくるにはどうしたらよいでしょうか?

  • エクセルVBAでグラフの線とマーカを設定したい

    エクセルVBAでグラフの線とマーカを設定したいです。 グラフの線は無しでマーカの線が有りにしたいのですが、 マクロで記録したコードを見ると グラフの線、マーカの線ともにFormat.Line.Visibleで指定しています。 実際にコードを記述しても、以下の様になり、グラフの線が表示されてしまいます。 ChartObjects("1").Chart.SeriesCollection(10).Format.Line.Visible = msoFalse With ChartObjects("1").Chart.SeriesCollection(10).Format.Line .Visible = msoTrue .ForeColor.RGB = RGB(255, 102, 0) .Transparency = 0 End With グラフの線は無しでマーカの線が有りに設定は出来ないのでしょうか?

  • Excelで軌跡グラフの作成

    Excel2016を利用しております。 時間経過とともに動いている点をグラフ化したいのですが、 現在シートのフォーマットとしては A列:時間 B列:x座標 C列:y座標 となっております。 B列とC列を選択して散布図グラフを描けば、とりあえず軌跡のグラフができますが、このグラフの中に、どのデータがどの時間のものなのか?が分かるデータを 取り込みたいのです。 データそのものは数千行ありますので、何点か抽出して表示できればと思うのですが、そのようなことは可能でしょうか。 ご教授、お願いいたします。

  • データをリアルタイムのようにグラフ化

    MATLABで作成した.matファイルもしくはExcelファイルなどに格納した あるデータ配列の数値をグラフ化するときに 時間によって変化するのが目に見えるようにするにはどうすればいいでしょうか? 例えば 100行2列のデータを2次元折れ線グラフとして表示するときに プログラムを実行すると1秒ごとに1行分のデータがプロットされ 時間ごとにグラフが推移していくようにしたいです。 また、そのような変数をいちいち与えず ファイルを読み込むだけにしたいのですが どのようなファイル形式ならばできるのでしょうか?

  • EXCELマクロで順番にグラフをつくるには?

    エクセルマクロ・VBA初心者です。 現在、グラフ作成で困ってます。 お詳しい方、よければアドバイスを下さい! 作成したいグラフは、元データが5000行×50列で、 1番左列に時刻、2列目からデータとなっており、 1-2列、1-3列、1-4列、・・・・1-50列 という感じの一般的な時系列グラフを多量につくりたいのです。 これをマクロを使って、別シートにグラフ(散布図)を並べて作るというものです。 さらに、別に用意したグラフの名称を並べたセルから、 順に、上記グラフのタイトルとして入力していきたいのです。 これをVBAを使って行いたいのですが、 一体どうすればいいのでしょうか? 「マクロの記録」では、 ■「50列目まで順番にグラフをつくれ!」 ■「名前を順番に入れていけ!」 という命令が私には作れません。 お詳しい方、ご返答宜しくお願い致します。

  • リアルタイムに動くグラフの作成

    現在、Excel2003を使用し折れ線グラフを作成しようと考えています。 そこで皆さんに教えて頂きたいのですが、 Excelに、 -------------------------------- ○セル番号L・M・N(セルを結合して中央揃え) ○セル番号LMNの5行~10行目にそれぞれ計6個、2から-2ぐらいの変動幅でリアルタイムに数字が表示。 -------------------------------- このようなデータを外部データリンクから取得しています。 そこでこの6個の数値の動きをそれぞれ30分おきぐらいに折れ線グラフに反映させ、一ヶ月くらいの数値の動きを見たいのですが、このようにリアルタイムに動くグラフ(株のチャートのようなもの)は作成可能でしょうか。 どなたか分かる方、知恵をお借りいただける方、よろしくお願いいたします。

  • VBAでのグラフ作成

    エクセルでグラフを60枚ほど作るのですがさすがに手作業がつらいので質問させていただきました。 データは6列おきに並んでおり(A~F、G~といった感じです) x軸に1,1~blankまで(すべてのデータで一定値ではないです) y軸に1,4 および1,6~blankまで(x軸と同じ値です)すべて縦に並んでいます グラフはxlline,埋め込み型(グラフシートは作成しません)、グラフタイトルはcells(1,2)とします。 系列をたす形でloopすると(1)、(2)等がうまくいかず Unionを利用し3列データを選択してグラフを書く方法も考えていますがまだ手付かずです。。。 なので (1)系列をたしつつloopする方法 (2)ほかのなにか簡単に書く方法 (3)Union selectで可能かどうか をお聞きしたいです グラフがかければいいので回答はどれか1つで構いません よろしくお願いします

  • Excelマクロ:配列データからグラフを作成するには?

    マクロ初心者です。 Excel VBAのマクロで、2つの配列データから、散布図グラフを作成したいのですが、セルに配列データを書き込まず、直接グラフ化するにはどうしたらよいでしょうか? 配列データの要素数がexcelの行と列の最大数(65536,256)?を超えてしまっているので、配列データから直接グラフ化したいと思っています。 よろしくお願いいたします。

  • EXCEL グラフの描き方

    EXCELで、系列Aを横軸に、系列B,Cを縦軸にとって 散布図を描こうとしています。 系列Bと系列Cのデータは単位も桁も違いますが、 一つのグラフに並べて挙動が分かりやすくなるように プロットしようとしたとき、 2種類の軸目盛を別々に設定することはできますか? どなたか、教えていただけるとうれしいです。

専門家に質問してみよう