• ベストアンサー

Excel2000でのVBAによる散布図の値の表示について

Excel2000の散布図の機能を使って、 時系列データを折れ線で表示させています。 あるデータの値だけをラベルとして表示させたいのですが、うまくいきません。 例えば、tとYのデータ t,Y 1,70 2,40 3,60 4,30 5,100 6,10 7,30 8,80 9,20 10,90 があるとして散布図で時系列表示させてYの値が50以上のポイントだけそのYの値をラベルとして表示させたいのです。 過去の質問を参考にして以下のようなVBAのプログラムを作ったのですがうまくいきません。 Sub Label() Dim i As Integer ActiveSheet.ChartObjects(1).Activate ActiveChart.ApplyDataLabels For i = 1 To Range("B1", Range("B1").End(xlDown)).Cells.Count If ActiveSheet.Cells(i, 2).Value > 50 Then ActiveChart.SeriesCollection(1).Points(i).DataLabel.Text = ActiveSheet.Cells(i, 2).Value End If Next i End Sub 一つ一つのポイントの値をグラフ上で消去したり入力するのは非常に大変なので、うまい方法がないか考えているところです。 今、Excel2000を使っています。 どなたか分かる方がおられましたら教えてください。 よろしくお願い致します。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

意味が違うかも知れませんが、、、こんな感じ?(Excel97で試してます) Sub Test() Dim i As Long, ch As Chart, ws As Worksheet Set ws = ActiveSheet Set ch = ws.ChartObjects(1) ch.ApplyDataLabels  For i = 1 To ws.Range("B1").End(xlDown).Row   If ws.Cells(i, 2).Value > 50 Then     ch.SeriesCollection(1).Points(i).DataLabel.Text = ws.Cells(i, 2).Value   Else     ch.SeriesCollection(1).Points(i).DataLabel.Text = ""   End If  Next i End Sub

webster
質問者

お礼

ご回答ありがとうございました。 VBAは初心者なので非常に参考になりました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 一応、自分自身でやってみましたが、papayukaさんと考え方は同じでした。 それから、マクロでChartを指定するときは、ChartObjectsのChartクラスだと思いますが……。 なお、一番上は、タイトル行として、2行目からにしました。 SeriesCollection(1).Pointsと、セルの行数を共有して使うのは、ちょっとややこしいです。本来は、For Each ~In のほうが分りやすいかもしれません。 Sub Labe3()   Dim i As Integer   With ActiveSheet.ChartObjects(1)    .Chart.ApplyDataLabels    For i = 1 To Range("B2", Range("B2").End(xlDown)).Cells.Count      If ActiveSheet.Cells(i + 1, 2).Value > 50 Then       .Chart.SeriesCollection(1).Points(i).DataLabel.Text = _       ActiveSheet.Cells(i + 1, 2).Value       Else       .Chart.SeriesCollection(1).Points(i).DataLabel.Text = ""      End If    Next i   End With End Sub

webster
質問者

お礼

ご回答ありがとうございました。 VBAは初心者なので非常に参考になりました。

関連するQ&A

専門家に質問してみよう