- ベストアンサー
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を使っています。 どなたか分かる方がおられましたら教えてください。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
意味が違うかも知れませんが、、、こんな感じ?(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
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 一応、自分自身でやってみましたが、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
お礼
ご回答ありがとうございました。 VBAは初心者なので非常に参考になりました。
お礼
ご回答ありがとうございました。 VBAは初心者なので非常に参考になりました。