You carefully position data labels on an Excel chart, save the file, and close it. When you reopen the file, the labels have shifted to different locations, ruining your layout. This problem usually occurs because Excel recalculates label positions based on the chart's default anchor settings, not your manual adjustments. This article explains why the labels move and provides three reliable methods to lock them in place.
Key Takeaways: Stop Excel From Resetting Data Label Positions
- Right-click a data label > Format Data Labels > Label Options > Label Position > Outside End: Changing the default position setting prevents automatic repositioning on reopen.
- Chart Design > Add Chart Element > Data Labels > More Data Label Options > Format Data Labels pane > Properties > Don't move with chart: Ties each label to a fixed screen coordinate instead of the chart plot area.
- Use a VBA macro to reset all label positions on workbook open: Automates the fix for files shared with colleagues who may not apply the manual settings.
Why Data Labels Shift After Saving and Reopening
Excel stores data label positions as relative offsets from the default anchor point defined by the chart type and size. When you reopen a file, Excel re-reads these offsets but also recalculates the chart layout, including axis scales, plot area dimensions, and legend placement. If any of these elements change even slightly — for example, because of printer driver differences or screen DPI settings — the anchor point moves, and your labels follow it.
The root cause is that Excel does not save absolute pixel coordinates for manually moved data labels. Instead, it saves a delta from the default position. On reopening, the default position is recomputed, and your delta is applied to that new default. If the chart area dimensions differ from when you saved the file, the label appears in a different place.
This behavior is by design and affects all chart types with data labels: column, bar, line, pie, and scatter. The issue is more common when you open the file on a different computer or monitor with a different resolution.
Three Methods to Prevent Data Labels From Moving
Method 1: Change the Default Label Position to "Outside End"
- Select the chart
Click once on the chart to activate the Chart Tools on the ribbon. - Open the Add Chart Element menu
Click Chart Design on the ribbon. In the Chart Layouts group, click Add Chart Element. - Choose Data Labels
Hover over Data Labels, then select More Data Label Options at the bottom of the list. The Format Data Labels pane opens on the right. - Set the Label Position
In the Format Data Labels pane, under Label Options > Label Position, select Outside End. This forces Excel to use a fixed anchor relative to the data point, which is more stable than the default Best Fit. - Save and reopen the file
Press Ctrl+S, close the workbook, and reopen it. The labels should remain in the Outside End position.
Method 2: Disable Label Movement With Chart Size Changes
- Right-click any data label
Click once on a label to select all labels, then right-click and choose Format Data Labels. - Open the Properties tab
In the Format Data Labels pane, click the Size & Properties icon — it looks like a square with arrows. - Change the object positioning
Under Properties, select Don't move with chart. This locks each label to a fixed screen position relative to the chart's top-left corner, not the plot area. - Apply to all labels
If you have multiple label series, repeat steps 1–3 for each series. Excel does not apply this setting globally — you must set it per series. - Save and test
Save the file, close it, and reopen it. Labels should stay exactly where you placed them.
Method 3: Use a VBA Macro to Reset Positions on Workbook Open
If you distribute the file to others who may not apply the manual settings, use a macro that runs automatically when the workbook opens.
- Open the VBA editor
Press Alt+F11 to open the Visual Basic for Applications editor. - Insert a new module
In the Project Explorer, right-click VBAProject (YourWorkbookName), select Insert, then Module. - Paste the macro code
Copy and paste the following code into the module window:Private Sub Workbook_Open() Dim cht As ChartObject Dim lbl As DataLabel For Each cht In ThisWorkbook.Sheets("Sheet1").ChartObjects For Each lbl In cht.Chart.FullSeriesCollection(1).DataLabels lbl.Position = xlLabelPositionOutsideEnd Next lbl Next cht End SubReplace "Sheet1" with the actual sheet name that contains your chart. If you have multiple series, add a loop for each series index number.
- Save as macro-enabled workbook
Press Ctrl+S, then save the file as Excel Macro-Enabled Workbook (.xlsm). - Close and reopen the file
Close the workbook and reopen it. The macro runs automatically and resets every data label to Outside End position.
If Labels Still Shift After Applying the Fixes
Labels Move When Opened on a Different Monitor
Excel's label positions depend on the screen DPI and resolution. If you create the chart on a 4K monitor and open it on a 1080p monitor, labels may shift. The only reliable workaround is to use the VBA macro in Method 3, which forces a consistent position regardless of screen settings.
Some Labels Overlap After Reopening
This happens when Excel's automatic label placement algorithm re-runs on open and moves overlapping labels. To stop this, right-click the chart, select Format Chart Area, click Chart Options, then click the Size & Properties icon. Under Properties, set the chart's object positioning to Don't move with chart as well. This prevents the entire chart from resizing, which can trigger label overlap resolution.
Macro Does Not Run When Opening the File
The macro only runs if macros are enabled. Check File > Options > Trust Center > Trust Center Settings > Macro Settings. Select Enable all macros. Be aware that enabling all macros can be a security risk. Alternatively, the user must click Enable Content when the yellow security bar appears.
Manual Label Positioning vs Don't Move With Chart: Key Differences
| Item | Manual Label Positioning | Don't Move With Chart |
|---|---|---|
| Description | You drag labels to a specific location using the mouse | You set a property that locks labels to fixed screen coordinates |
| Persistence on reopen | Labels often shift because Excel recalculates the anchor | Labels stay in place because coordinates are absolute |
| Effect when chart resizes | Labels move relative to the plot area | Labels do not move at all |
| Best use case | One-time presentation where you control the viewing environment | Shared files or reports opened on different screens |
You can now keep your chart data labels exactly where you want them, even after saving and reopening the file. Start by applying the Outside End position and the Don't move with chart property on each label series. For workbooks you share with others, add the VBA macro to automate the fix. An advanced tip: you can also set the chart's Plot Area size to a fixed value in the Format Plot Area pane to reduce layout recalculations.