- ベストアンサー
アニメーションするExcelのグラフ
エクセルで、ある2種類の(x,y)グラフの値の一覧を入力した以下のようなものを作りました。 グラフ1 グラフ2 X Y X Y 0 100 200 103 201 1 101 201 102 198 2 102 202 102 199 3 103 203 104 200 : : : : : これを行番号ごとに連動させてアニメーションさせたグラフを作りたいのですが Excel内、もしくはその他アプリケーションでそういったことをすることは可能でしょうか? 上の説明だと分かりにくいかもしれませんのでアニメーションの補足説明 行番号0のグラフ1の(100,200)とグラフ2の(103,201)の点が表示される 座標間0→1に線分が引かれる 行番号1のグラフ1の(101,201)とグラフ2の(102,198)の点が表示される 座標間1→2に線分が引かれる 以降繰り返し というような感じで行番号に連動して同じ時間軸の点が表示されるというのです
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
外しているかもしれませんが、下記のように考えてみました。 グラフ1のX値データはC3以下、グラフ2のY値データはE3以下E列以下にあると仮定しています。 グラフは1つ、系列も1つ、データ範囲は1行毎に移動 Dim myTime As Variant Dim rng As Range Dim c As Range Set rng = Range("B3", Cells(Rows.Count, 2).End(xlUp)) With ActiveChart.SeriesCollection(1) For Each c In rng .XValues = "{" & c.Value & "," & c.Offset(, 2).Value & "}" .Values = "{" & c.Offset(, 1).Value & "," & c.Offset(, 3).Value & "}" .ChartType = xlXYScatter myTime = Now + TimeValue("00:00:01") Do While Now < myTime DoEvents Loop .ChartType = xlXYScatterLines myTime = Now + TimeValue("00:00:02") Do While Now < myTime DoEvents Loop Next c End With
その他の回答 (2)
- mitarashi
- ベストアンサー率59% (574/965)
グラフのデータ範囲を動的に変化させる方法は面倒なので、下記で、紹介されている、表示しないデータはIF文で、#N/Aにして、プロットしないというのが良さそうです。 スピンボタンで変化させる、あるセルの値が、見出し列に入れた連番以上ならば、参照先セルを表示、否なら#N/Aにするといった方法を用います。 http://www.excel.studio-kazu.jp/kw/20060703225951.html スピンボタンでなくて、マクロでやりたい場合は、下記の程度で如何でしょう。 値を変化させたいセルをA8とした場合のコードです。ご参考まで。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Macro1() Dim i As Long For i = 1 To 5 Range("A8").Value = i DoEvents Sleep 2000 '2秒毎にプロット Next i End Sub
- ASIMOV
- ベストアンサー率41% (982/2351)
グラフ1 と グラフ2 は別のグラフなんですよね? だとすると、解らないのが >行番号0のグラフ1の(100,200)とグラフ2の(103,201)の点が表示される >座標間0→1に線分が引かれる 点が1つしか打たれていないのに何処に線を引くのでしょうか? >同じ時間軸の点が表示される Xが時間という事でしょうか? だとすると、グラフ2のXは時間が前後している様ですが、どうなんでしょう?
補足
>グラフ1 と グラフ2 は別のグラフなんですよね? そうですね、別のグラフです もう少し詳しく説明しますと 2つの物体があって、それらの位置がX,Y座標系として秒毎にそれぞれExcelに書き出したデータです それらの同じ時間帯での位置的な差異を視覚的に見たいためこのような質問をした次第です >点が1つしか打たれていないのに何処に線を引くのでしょうか? ちょっと語弊を生む表現ですいませんでした これは映像的にどう表示するかを記載したものでして、その結ぶ2点自体はデータ上にはすでに数値としてあるので、その2点目の数値に向けて線を引きたいと書きたかったんです つまり言い換えますと、離散的な点データを表示するのではなく、連続的な線データとして出力したかったんです