How to Make an Excel Chart Y-Axis Scale Dynamically
Question details
The user needs a method to dynamically adjust the Y-axis scale of a chart when the underlying data range changes or is filtered, avoiding the default behavior of anchoring to zero.

- Product
- Microsoft Excel
- Device & OS
- not provided
- Scenario
- Creating charts with filtered data or dynamic ranges where default auto-scaling fails to match the newly visible data.
- Observed behavior
- The chart's Y-axis remains anchored at zero and does not automatically adjust its minimum and maximum bounds to fit the visible data range.
Ensure you have your raw dataset ready and that the Developer tab is enabled in your spreadsheet program if you plan to use VBA macros for automated scaling.
Use Helper Cells and VBA for Dynamic Y-Axis Scaling
Calculate the visible minimum and maximum values using helper cells, then apply a VBA macro to automatically update the Y-axis scale based on those specific cells.
Excel does not natively allow you to link chart axis bounds to a specific cell value via the standard interface. To achieve true dynamic scaling based on filtered data, combining spreadsheet formulas with a short VBA script is the most reliable method.
In an empty area of your sheet, create two helper cells. Use the SUBTOTAL or AGGREGATE function to find the minimum and maximum values of your dataset (e.g., `=SUBTOTAL(104, B2:B100)` for Max and `=SUBTOTAL(105, B2:B100)` for Min). This ensures only visible, filtered data is calculated.
Press ALT + F11 on your keyboard to open the Visual Basic for Applications (VBA) editor. Right-click your workbook in the Project pane, select 'Insert', and choose 'Module'.
Write a script that assigns the helper cell values to the chart axis. For example: `ActiveSheet.ChartObjects("Chart 1").Chart.Axes(xlValue).MinimumScale = ActiveSheet.Range("D1").Value` and set the `MaximumScale` similarly for your Max helper cell.
To make this dynamic, you can place the code inside the `Worksheet_Calculate` event in the specific sheet module so that whenever the data is filtered or changes, the chart axes adjust instantly.

Use Dynamic Named Ranges for the Chart Data
Use the OFFSET and COUNTA functions to define dynamic named ranges that automatically expand or contract, ensuring the chart always references the correct amount of data.
Create Dynamically Scaling Charts with WPS Spreadsheet
WPS Office offers a powerful spreadsheet tool that seamlessly handles dynamic charts, filtered data, and VBA macros. It provides full compatibility with Microsoft Excel files, allowing you to create and view dynamic visualizations efficiently.
- 1. Open WPS Spreadsheet: Launch WPS Office and open your workbook containing the chart data.
- 2. Insert Your Chart: Highlight the dataset you want to visualize and go to the 'Insert' tab to choose your preferred chart type.
- 3. Filter Your Data: Use the 'Data' tab to apply auto-filters to your columns. The chart will automatically hide filtered-out data points.
- 4. Utilize VBA Editor: To implement dynamic Y-axis scaling, press ALT + F11 to launch the WPS Macro editor and apply the same VBA script to link your chart axes to helper cells.

Frequently Asked Questions
Why does my Excel chart Y-axis always start at zero even with large numbers?
By default, Excel anchors the Y-axis at zero to provide a standard baseline for visual comparison. For data with small variations but high base values, you need to uncheck 'Auto' in the axis formatting options or use VBA to scale the bounds dynamically based on your data.
Can I link chart axis minimum and maximum bounds to a cell without VBA?
No, standard Excel does not provide a native feature to link the minimum or maximum bounds of a chart axis directly to a cell reference. You must use VBA or Office Scripts to pass the cell value to the chart object properties.
Do Office Scripts work on Excel for the web for chart scaling?
Yes, if you use Excel for the Web on an enterprise account, you can use Office Scripts (TypeScript) instead of VBA to automate chart scaling. You can write a script to retrieve values from your Min/Max helper cells and apply them to the chart's value axis.




