• 締切済み

ラベル付き散布図作成マクロ、元データは必ず縦表?

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 ご存知の方、教えていただけましたら幸いです。 宜しくお願いします。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.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

higashikami
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A