Excel图表制作,一直是个难点,由于其类型多,格式也复杂,涉及到的图形也比较多,所以在使用过程当中,会发现有点不知所措。
Chart对象本节简单介绍一下,使用VBA代码在数据表中的系列值如何设置和返回。
首先还是要获取一个Chart对象,上节我们介绍过,Chart对象就是代表一个图表。
一个图表里面包含了很多图片、文本,下面就对这些图片、文本进行设置做一个梳理。
如下图所示:提取出图表中的年龄和姓名生成一表。
代码可以重点看一下代码,对照代码进行理解:
Option ExplicitPrivate Sub GetSeries()Dim xChart As ObjectSet xChart = ThisWorkbook.Charts(1) '返回Chart图表工作表Dim i As Integer, n As Integern = xChart.SeriesCollection.Count '返回系列总数For i = 1 To n Range("B6").Offset(i, 0) = xChart.SeriesCollection(i).NameNext iDim xChartObject As Object, xSeries As Objectn = xChart.SeriesCollection.CountIf n >= 1 Then For i = 1 To n Set xSeries = xChart.SeriesCollection(i) Range("B6").Offset(i - 1, 1).Value = xSeries.Name Next iEnd IfxSeries.SelectDim x As Variant, xArr()xArr = xSeries.XValues '返回x轴值数组i = 1For Each x In xArr Range("B6").Offset(i, 0).Value = xArr(i) i = i + 1Next xxArr = xSeries.Values '返回系列值数组i = 1For Each x In xArr Range("B6").Offset(i, 1).Value = xArr(i) i = i + 1Next xEnd Sub
关键代码:
Set xChart = ThisWorkbook.Charts(1) '返回Chart图表工作表Set xSeries = xChart.SeriesCollection(1)'返回第一个系列对象xArr = xSeries.XValues '返回x轴值数组xArr = xSeries.Values'返回系列值数组xSeries.Values = Array(222, 221, 1111)'设置系列值xSeries.XValues = Array("姓名一", "姓名二", "姓名三") '设置x轴系列值Series对象方法和属性方法 | 属性 |
ApplyDataLabels | Application |
ClearFormats | ApplyPictToEnd |
Copy | ApplyPictToFront |
DataLabels | ApplyPictToSides |
Delete | AxisGroup |
ErrorBar | BarShape |
Paste | BubbleSizes |
Points | ChartType |
Select | Creator |
Trendlines | ErrorBars |
Explosion | |
Format | |
Formula | |
FormulaLocal | |
FormulaR1C1 | |
FormulaR1C1Local | |
GeoMappingLevel | |
GeoProjectionType | |
Has3DEffect | |
HasDataLabels | |
HasErrorBars | |
HasLeaderLines | |
InvertColor | |
InvertColorIndex | |
InvertIfNegative | |
IsFiltered | |
LeaderLines | |
MarkerBackgroundColor | |
MarkerBackgroundColorIndex | |
MarkerForegroundColor | |
MarkerForegroundColorIndex | |
MarkerSize | |
MarkerStyle | |
Name | |
Parent | |
ParentDataLabelOption | |
PictureType | |
PictureUnit2 | |
PlotColorIndex | |
PlotOrder | |
QuartileCalculationInclusiveMedian | |
RegionLabelOptions | |
Shadow | |
Smooth | |
Type | |
Values | |
XValues |
很显然,用到了不止一个对象,有Chart、Series和SeriesCollection,三个对象。
这三个对象分别有许多方法和属性,而这里用到了Series的xValues和Values两个。
其它方法属性,下次再做详细介绍。
关键是如何获取对象,并对对象的哪些属性进行修改,这样再编程序的时候就可以方便地解决我们的需求了。
欢迎关注、收藏
---END---
在Excel图表坐标轴调整下图这样:
要把上图的月份坐标轴(水平坐标轴)调成下图效果:
问题:如何调整图表的水平/垂直坐标轴的位置?
解答:利用图表中的坐标轴逆序功能来实现。
具体操作如下:如果要翻转水平坐标轴,则需要选中对应的垂直坐标轴,如(下图 1 处)所示:
然后按Ctrl+1组合键打开对应设置菜单,勾选“逆序刻度值”即可。如下图2 处。
同理,如果要翻转“垂直坐标轴”位置,这需要选中“水平坐标轴”。然后在设置菜单中,勾选“逆序类别”。(下图 3 处)
设置完毕后效果如下:
总结:Excel中任意图表的坐标轴可以实现位置的翻转,但需要注意翻转的坐标轴与选中设置坐标轴之间的对应关系。掌握坐标轴的翻转,是高级图表制作的基础。
Excel图表包含两个坐标轴,分别是X轴和Y轴,通常情况下X轴作为图表类别,而Y轴则是作为图表系列。
那么根据不同图表的需求,怎么来自定义调整x轴和y轴的值呢?
下面我们以两个图表实例,来讲解自定义x轴和y轴的操作。
如下图为柱形图,它是2022年全国GDP十强县规模和同比增长率图表。
从图表可见,x轴作为类别轴,显示了不同城市,而y轴作为系列轴,要显示各城市的gdp数值。
此时图表并不能很直观地展示最大gdp值和最小gdp值的对比,比如对比第1个柱子昆山的值和最后1个柱子义乌的值,实际上两个数值分别为5004.7与1835.54,几乎是3倍的差距,但这个图表没有很明显地展示出它们之间的差距!
因此我们可以通过自定义y轴的值,来改变这一情况。
首选我们点击y轴坐标,然后右击鼠标,在弹出的属性框中选择“设置坐标轴格式”。
随后在弹出的设置框中点击坐标轴选项下的“最小值”输入框,并更改值为1500.
这里为什么要输入最小值为“1500”?
这是因为义乌的数据是1835.54,我们需要取一个小于这个数值且比较接近的整数,因为选择1500。当然我们也可以输入1800、1700……等,并不一定是一个固定的数字,按照一般需求即可。
完成操作后,我们回到图表,此时从下图可见,图表前两个柱子的长度与后几个柱子长度差别非常明显,我们可以更直观地比较两组数据之间的差距!
因此自定义y轴的操作是通过设置坐标轴格式,并手动调整坐标轴边界值中的最小值或最大值,或者是调整单位的大小间隔。
接下来我们再通过一个散点图来自定义x轴。
如下图所示,它是某同学2022年足迹图。
从图表可见基本上所有的城市点都在图表上方,那么为了能够更均匀的展示数据,因此我们可以对图表的x轴和y轴进行调整。
通过上面所学,调整y轴的值是通过设置坐标轴格式,因此我们右击y轴,在边界最小值处输入“15”,这个值的原理与上面所述相同。
此时所有的城市点将较为均匀地分布在图表中,随后我们再点击下方x轴坐标。
由于刚才设置了y轴格式,还没有关闭设置窗口,因此可以直接点击x轴,系统会自动切换坐标轴格式窗口为x轴的设置界面,如上图所示,我们同样将最小值进行调整,设置为“108”,这样最接近这个点的城市会显示在靠近边界的位置。
自定义x轴和y轴的效果如下图所示:
那么从上述两个图表的自定义操作可知,要更改x轴和y轴的值,实际上是对坐标轴中的边界和单位进行调整,而调整x轴及y轴的值,其原因则是为了使图表更贴合我们的需求,比如展示更明显地对比差异,或者使图表中的点更加均匀分布等等。