How to use a macro to add labels to data points in an xy scatter chart or in a bubble chart in Excel


In Microsoft Excel, there is no built-in command that automatically attaches text labels to data points in an xy (scatter) or Bubble chart. However, you can create a Microsoft Visual Basic for Applications macro that does this. This article contains a sample macro that performs this task on an XY Scatter chart. However, the same code can be used for a Bubble Chart.

More Information

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. The sample code in this article assumes that the data and associated labels are arranged in a worksheet according to the following format:
  • The first column contains the data labels.
  • The second column contains the x values for the xy (scatter) chart.
  • The third and subsequent columns contain the y values for the xy (scatter) chart.
NOTE: Although the example provided contains only one column of data for y values, you can use more than one series of data.

To use the macros in this article, create a chart using the following data:

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
NOTE: The table should not contain empty columns, and the column that contains the data labels should not be separated from the column that contains the x values. The labels and values must be laid out in exactly the format described in this article. (The upper-left cell does not have to be cell A1.)

To attach text labels to data points in an xy (scatter) chart, follow these steps:
  1. On the worksheet that contains the sample data, select the cell range B1:C6.
  2. In Microsoft Office Excel 2003 and in earlier versions of Excel, follow these steps:
    1. Click Chart on the Insert menu.
    2. In the Chart Wizard - Step 1 of 4 - Chart Type dialog box, click the Standard Types tab. Under Chart type, click XY (Scatter), and then click Next.
    3. In the Chart Wizard - Step 2 of 4 - Chart Source Data dialog box, click the Data Range tab. Under Series in, click Columns, and then click Next.
    4. In the Chart Wizard - Step 3 of 4 - Chart Options dialog box, click Next.
    5. In the Chart Wizard - Step 4 of 4 -Chart Location dialog box, click the As new sheet option, and then click Finish.
    In Microsoft Office Excel 2007, follow these steps:
    1. Click the Insert tab, click
      Scatter in the Charts group, and then select a type.
    2. On the Design tab, click Move Chart in the Location group, click
      New sheet , and then click OK.
  3. Press ALT+F11 to start the Visual Basic Editor.
  4. On the Insert menu, click Module.
  5. Type the following sample code in the module sheet:
    Sub AttachLabelsToPoints()

    'Dimension variables.
    Dim Counter As Integer, ChartName As String, xVals As String

    ' Disable screen updating while the subroutine is run.
    Application.ScreenUpdating = False

    'Store the formula for the first series in "xVals".
    xVals = ActiveChart.SeriesCollection(1).Formula

    'Extract the range for the data from xVals.
    xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, _
    Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))
    xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1)
    Do While Left(xVals, 1) = ","
    xVals = Mid(xVals, 2)

    'Attach a label to each data point in the chart.
    For Counter = 1 To Range(xVals).Cells.Count
    ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = _
    ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
    Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
    Next Counter

    End Sub
  6. Press ALT+Q to return to Excel.
  7. Switch to the chart sheet.
  8. In Excel 2003 and in earlier versions of Excel, point to Macro on the Tools menu, and then click Macros. Click AttachLabelsToPoints, and then click Run to run the macro.

    In Excel 2007, click the Developer tab, click
    Macro in the Code group, select
    AttachLabelsToPoints, and then click Run.
The macro attaches the labels in cells A2:A6 to the data points on the chart.

Artikkel-ID: 213750 – Forrige gjennomgang: 18. sep. 2011 – Revisjon: 1

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft Excel X for Mac, Microsoft Excel 2001 for Mac, Microsoft Excel 98 for Macintosh, Microsoft Office Excel 2003, Microsoft Excel 2010