How to get the x-axis of an Excel scatter chart programmatically
Excel lets you manipulate its charts programmatically with VBA (Visual Basic for Applications) or with ExcelScript (TypeScript calling the Excel API). Unfortunately, I couldn't find any method that obviously lets you get the x-axis—because Excel uses a different ontology for naming the axes.
Charts in Excel's ontology have two axes: Category and Value. The name Category is misleading — in the case of a scatter plot, Category means the x-axis, regardless of whether you're plotting a categorical or a continuous variable there. It's basically the thing all your chart's series are plotted against. This axis shows a value in the common "domain" the series all share. The Value axis is the other one — the axis on which your series values are plotted.
For example, suppose we have the following data arranged in a 4x2 grid of cells in Excel:
Foo | Bar |
---|---|
1.2 | 3.6 |
3.4 | 10.1 |
5 | 15.8 |
If we select this whole grid and make a scatter chart, Foo should end up the Category axis and Bar should end up the Value axis of the chart. So Foo will be plotted on the x-axis.
So to get the x-axis of an Excel chart programmatically, you want to get the axes and then specifically get the Categorical axis. In ExcelScript, I think that would look like:
let xAxis = chart.getAxes().getCategoryAxis();
If I understand correctly, the x-axis is actually the value axis in a few charts, for example in a 2D bar chart. So, for such a chart you would want to call .getValueAxis()
instead of .getCategoryAxis()
.