专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
Excel之家ExcelHome  ·  Excel求和方式与工资标准,据说挺准的 ·  4 天前  
Excel之家ExcelHome  ·  频数计算很简单,搬砖搬到六十三 ·  4 天前  
完美Excel  ·  LAMBDA函数应用(十二) ·  1 周前  
Excel之家ExcelHome  ·  一组Excel技巧,每天节约10分钟 ·  1 周前  
Excel之家ExcelHome  ·  几个常用Excel公式,新手效率提升2.7% ·  1 周前  
51好读  ›  专栏  ›  完美Excel

Excel图表编程:使用VBA创建带有坐标轴标题的XY散点图

完美Excel  · 公众号  · Excel  · 2024-09-07 07:08

正文

学习Excel技术,关注微信公众号:
excelperfect

标签:VBAExcel图表
XY图表使用XY数据列顶部的标签作为坐标轴标题似乎不是内置功能,然而,可以使用VBA实现。

示例数据如下图1所示。

1
VBA代码如下:

Sub ChartWithAxisTitles() Dim objChart As ChartObject Dim myChtRange As Range Dim myDataRange As Range Dim myInitialRange As Range Dim sInitialRange As String  If Not ActiveSheet Is Nothing Then   If TypeName(ActiveSheet) = "Worksheet" Then     If TypeName(Selection) = "Range" Then       Set myInitialRange = Selection       If myInitialRange.Cells.Count = 1 Then         Set myInitialRange = myInitialRange.CurrentRegion       End If       sInitialRange = myInitialRange.Address(TrueTrue)     End If      With ActiveSheet       On Error Resume Next       Set myDataRange = Application.InputBox( _         Prompt:="选择包含图表数据的单元格区域.", _         Title:="选择图表数据", _         Default:=sInitialRange, _         Type:=8)       On Error GoTo 0       If myDataRange Is Nothing Then Exit Sub        On Error Resume Next       Set myChtRange = Application.InputBox( _         Prompt:="选择图表显示的单元格区域.", _         Title:="选择图表位置", _         Type:=8)       On Error GoTo 0       If myChtRange Is Nothing Then Exit Sub        Set objChart = .ChartObjects.Add( _         Left:=myChtRange.Left, _         Top:=myChtRange.Top, _         Width:=myChtRange.Width, _         Height:=myChtRange.Height)        With objChart.Chart         .ChartArea.AutoScaleFont = False         .ChartType = xlXYScatterLines         .SetSourceData Source:=myDataRange, PlotBy:=xlColumns         .HasTitle = True         .ChartTitle.Characters.Text = "我的标题"         .ChartTitle.Font.Bold = True         .ChartTitle.Font.Size = 10         With .Axes(xlCategory, xlPrimary)           .HasTitle = True           With .AxisTitle             .Font.Size = 8             .Font.Bold = True             .Characters.Text = myDataRange.Cells(11)           End With         End With         With .Axes(xlValue, xlPrimary)           .HasTitle = True           With .AxisTitle             .Font.Size = 8             .Font.Bold = True             .Characters.Text = myDataRange.Cells(12)           End With         End With       End With     End With   End If End IfEnd Sub

代码运行后,会依次显示两个对话框。一个对话框要求输入图表数据区域,另一个要求输入图表显示的区域。

如下图2所示,代码会自动选择当前单元格所在的数据区域作为图表数据。

2
如下图3所示,选择图表要放置的单元格区域。

3
结果如下图4所示。数据区域的第一列用于X坐标值和X轴标题,其他用于两个系列的Y值。第一个Y数据列上方的单元格用于Y轴标题,每个Y数据列上方的单元格用于相应的系列名称。

4
注:本示例学习整理自peltiertech.com,一个优秀的图表知识学习站点。


欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

推荐文章
Excel之家ExcelHome  ·  Excel求和方式与工资标准,据说挺准的
4 天前
Excel之家ExcelHome  ·  频数计算很简单,搬砖搬到六十三
4 天前
完美Excel  ·  LAMBDA函数应用(十二)
1 周前
Excel之家ExcelHome  ·  一组Excel技巧,每天节约10分钟
1 周前
Excel之家ExcelHome  ·  几个常用Excel公式,新手效率提升2.7%
1 周前
iWeekly周末画报  ·  没去过这7个海岛,怎么好意思说我爱你
7 年前
世纪风云潮  ·  天龙八部众与龙文化
7 年前