アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel でマクロを使用して散布図にラベルを付ける際に、以下のような説明・例を見つけたのですが
http://support.microsoft.com/kb/213750/ja

散布図の元になるデータですが、この説明中にあるようにデータポイントを縦一列に並べないといけないのでしょうか。横に並んでいる状態でしたら無理でしょうか。

説明中の例となっている元データはこのように縦に並んでいます。
A1: Labels B1: X Values C1: Y Values
A2: DataPoint1 B2: 12 C2: 5
A3: DataPoint2 B3: 9 C3: 7
A4: DataPoint3 B4: 5 C4: 3
A5: DataPoint4 B5: 4 C5: 8
A6: DataPoint5 B6: 1 C6: 4

この例となっている元データの下の注意書きに「ラベルや値は、この資料に記載されているフォーマットのとおりに配置する必要があります」と書かれています。他にもこのような説明をネット上で見つけましたが、どれも元データは縦列になっています。以下のように元データが横に並んでいる場合に可能な方法はないでしょうか。

A1: Label B1: DataPoint1 C1: DataPoint2 D1: DataPoint3 D1: DataPoint4 E1: Datapoint 5
A2: X Values B2: 12 C2: 9 D2: 5 D2: 4 E2: 1
A3: Y Values B3: 5 C3: 7 D3: 3 D4: 8 D5: 4

ご存知の方、教えていただけましたら幸いです。
宜しくお願いします。

A 回答 (1件)

>散布図の元になるデータですが、


>この説明中にあるようにデータポイントを縦一列に並べないといけないのでしょうか。
”サンプルマクロを使用するには”という事です。

>横に並んでいる状態でしたら無理でしょうか。
データ表にあったようにコードを編集すれば大丈夫です。
サンプルマクロでは
A列にあるラベルデータを取得するため、列固定で行をインクリメントしています。
For Counter = 1 To Range(xVals).Cells.Count
ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = True
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
Next Counter

本質問の提示例のように
1行目にラベルデータがあるのなら行固定で列数をインクリメントします。
For Counter = 1 To Range(xVals).Cells.Count
ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = True
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
Range(xVals).Cells(1, Counter).Offset(-1, 0).Value
Next Counter

下記のように
Range(xVals)の行数を判定してIf文で分岐処理することもできます。
(コードは動作未確認です。上手く動かなければデバッグしてください。)
For Counter = 1 To Range(xVals).Cells.Count
With ActiveChart.SeriesCollection(1).Points(Counter)
.HasDataLabel = True
If Range(xVals).Rows.Count = 1 Then
.DataLabel.Text = _
Range(xVals).Cells(1, Counter).Offset(-1, 0).Value
Else
.DataLabel.Text = _
Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
End If
End With
Next Counter
    • good
    • 0
この回答へのお礼

お礼遅れましてすみません。丁寧な回答いただきまして、ありがとうございます。

お礼日時:2012/05/13 05:03

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