- 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.
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: 4NOTE: 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.
- In 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.
- Click the Insert tab, click Scatter in the Charts group, and then select a type.
- 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:
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) Loop 'Attach a label to each data point in the chart. 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 CounterEnd Sub
- Press ALT+Q to return to Excel.
- Switch to the chart sheet.
- 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.