| Excel Tips by pPoy |
| Macro | 散布図にデータラベルをセットするマクロ 《XYグラフ》 (Excel2000,Excel2002,Excel2003) | ||
|---|---|---|---|
|
Excel で散布図を作成した場合、指定した列(行) の値をデータラベルとしてセットすることは、標準の機能では出来ません。 1つずつ既存のラベルに値を入れていけば、一応できるのですが、要素数が多いと大変です。 以下は、マクロでラベルをセットする方法です。 | |||
≪準備≫![]() ←このような散布図があります。 「参加家族」 列 (X軸) の隣の 「住所」 列の値を、 それぞれのマーカのラベルにセットしたいと思います。 以下のコードを標準モジュールに貼り付けてください。 | |||
Sub setLabels()
On Error GoTo err_setLabels
'散布図にデータラベルをセットするマクロ
'X軸のデータ数とラベルの数は等しいこと
'Y軸のデータ系列は1つのみ 2010/08/28 pPoy
Dim stRngX As String 'X軸のデータ範囲
Dim mySRS As Object 'グラフのデータ系列
Dim rngL As Range 'ラベルのデータ範囲
Dim cntX As Long, cntL As Long
Dim stMES As String
Dim i As Long
'X軸のデータ範囲文字列取得
If ActiveChart Is Nothing Then
MsgBox "グラフを1つ選択してください!", vbOKOnly
Exit Sub
Else
Set mySRS = ActiveChart.SeriesCollection(1)
stRngX = Split(mySRS.Formula, ",")(1)
cntX = Range(stRngX).Cells.Count
End If
'ラベルのデータ範囲取得
stMES = "ラベルのデータ範囲を選択してください。(見出し行は除外)"
Set rngL = Application.InputBox(Prompt:=stMES, Type:=8)
cntL = rngL.Cells.Count
'チェック
If cntX <> cntL Then
stMES = "X軸のデータ数とラベルのデータ数が違います!"
stMES = stMES & vbNewLine
stMES = stMES & "最初からやり直してください。"
MsgBox stMES, vbOKOnly
Exit Sub
End If
'ラベルセット処理開始
For i = 1 To cntX
With mySRS.Points(i)
'データが無い場合はスキップ
On Error Resume Next
.HasDataLabel = True
.DataLabel.Text = rngL.Cells(i).Value
End With
Next i
MsgBox "処理終了〜", vbOKOnly
exit_setLabels:
Exit Sub
err_setLabels:
Select Case Err.Number
Case 424
'InputBoxでキャンセルされた場合
MsgBox "最初からやり直してください", vbOKOnly
Err.Clear
Case Else
'その他のエラー
MsgBox Err.Number & " - " & Err.Description
End Select
Resume exit_setLabels
End Sub
|
|
≪使い方≫ マクロを動かす前に、シート若しくは Book のコピーを取ります。 コピーしたグラフでこのマクロを試してください。 ![]() まず、グラフを選択します。 その後で、メニューから 「ツール」− 「マクロ」−「マクロ」−「setLabels」 を実行します。 「ラベルのデータ範囲を選択してください。」 の入力ボックスが表示されます。 データラベルの範囲を選択して、「OK」 を押します。 (この例では、C5 〜 C13 を選択しています) OK を押すと、一瞬でラベルが作成されます。 |
≪結果≫![]() ← 無事にデータラベルが作成されました。 |
≪注意≫
|
Copyright(C) pPoy 2010