プロが教えるわが家の防犯対策術!

エクセルで、ある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に線分が引かれる
以降繰り返し

というような感じで行番号に連動して同じ時間軸の点が表示されるというのです

A 回答 (3件)

グラフ1 と グラフ2 は別のグラフなんですよね?


だとすると、解らないのが

>行番号0のグラフ1の(100,200)とグラフ2の(103,201)の点が表示される
>座標間0→1に線分が引かれる

点が1つしか打たれていないのに何処に線を引くのでしょうか?

>同じ時間軸の点が表示される

Xが時間という事でしょうか?
だとすると、グラフ2のXは時間が前後している様ですが、どうなんでしょう?

この回答への補足

>グラフ1 と グラフ2 は別のグラフなんですよね?
そうですね、別のグラフです

もう少し詳しく説明しますと
2つの物体があって、それらの位置がX,Y座標系として秒毎にそれぞれExcelに書き出したデータです
それらの同じ時間帯での位置的な差異を視覚的に見たいためこのような質問をした次第です

>点が1つしか打たれていないのに何処に線を引くのでしょうか?
ちょっと語弊を生む表現ですいませんでした
これは映像的にどう表示するかを記載したものでして、その結ぶ2点自体はデータ上にはすでに数値としてあるので、その2点目の数値に向けて線を引きたいと書きたかったんです
つまり言い換えますと、離散的な点データを表示するのではなく、連続的な線データとして出力したかったんです

補足日時:2010/01/25 12:24
    • good
    • 0

外しているかもしれませんが、下記のように考えてみました。


グラフ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
    • good
    • 1

グラフのデータ範囲を動的に変化させる方法は面倒なので、下記で、紹介されている、表示しないデータはIF文で、#N/Aにして、プロットしないというのが良さそうです。


スピンボタンで変化させる、あるセルの値が、見出し列に入れた連番以上ならば、参照先セルを表示、否なら#N/Aにするといった方法を用います。
http://www.excel.studio-kazu.jp/kw/2006070322595 …
スピンボタンでなくて、マクロでやりたい場合は、下記の程度で如何でしょう。
値を変化させたいセルを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
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!