みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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を使っています。
どなたか分かる方がおられましたら教えてください。
よろしくお願い致します。

投稿日時 - 2005-08-31 18:30:59

QNo.1617907

すぐに回答ほしいです

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

意味が違うかも知れませんが、、、こんな感じ?(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

投稿日時 - 2005-08-31 19:16:06

お礼

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

投稿日時 - 2005-09-05 10:16:43

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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

投稿日時 - 2005-08-31 20:21:47

お礼

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

投稿日時 - 2005-09-05 10:17:39

あなたにオススメの質問