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
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
The first column contains the data labels.
The second column contains the x values for the xy
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:
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:
On the worksheet that contains the sample data, select the
cell range B1:C6.
Microsoft Office Excel 2003 and in earlier versions of Excel, follow these steps:
Click Chart on the Insert menu.
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.
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.
In the Chart Wizard - Step 3 of 4 - Chart
Options dialog box, click Next.
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:
Click the Insert tab, click
Scatter in the Charts group, and then select
On the Design tab, click Move
Chart in the Location group, click
New sheet , and then click OK.
Press ALT+F11 to start the Visual Basic Editor.
On the Insert menu, click Module.
Type the following sample code in the module sheet:
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
Press ALT+Q to return to Excel.
Switch to the chart sheet.
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.
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