分享

Excel之VBA常用功能应用篇:用代码来制作Excel 统计图表

 每天学学Excel 2022-02-15

Excel工作表最终有一个目的,那就是统计各类数据,以给出一些量化指标,以此来做出一些关键性决策。

大多时候,数据显示,并不是十分直观,而图表就显示十分醒目了。所以,图表是对各类数据可视化的一个表现形式。

本节介绍一下,关于数据图形化的一些操作方法和思路。

我们利用一个真实示例进行演示,以达到最佳的学习效果。

下图为某表的统计结果,以窗体形式显示出来,这并不是主要目的。

最终的结果是将这些数据生成图形。

如下图所示,就是生成图表的一个内容。

根据不同的统计方法,生成不同的图表,以达到一个明显的柱状趋势,当然了,也可以修改某些参数来实现图形的变化。

重点是如何实现这个生成过程。

我人利用了VBA代码来进行实现。

其实现过程看如下代码:

For Each pObj In P.Shapes

If pObj.Type = 3 Then

Select Case pObj.Name

Case pArr(0)

ir = 14

pObj.Chart.SetSourceData Source:=S.Range("B2:B14")

pObj.Chart.ChartTitle.Text = S.Range("A2").Value

Case pArr(1)

ir = S.Range("E65535").End(xlUp).Row

If ir <= 2 Then ir = 3

pObj.Chart.SetSourceData Source:=S.Range("F2:F" & ir) '设置数据区域

With pObj.Chart

.HasTitle = True

.ChartTitle.Text = S.Range("E2").Value

pObj.Chart.Axes(xlValue).CategoryNames = S.Range("E3:E" & ir) '设置坐标轴名称

End With

Case pArr(2)

ir = S.Range("M65535").End(xlUp).Row

If ir <= 2 Then ir = 3

pObj.Chart.SetSourceData Source:=S.Range("N2:N" & ir)

With pObj.Chart

.HasTitle = True

.ChartTitle.Text = S.Range("M2").Value

' pObj.Chart.Axes(xlSeriesAxis).CategoryNames = S.Range("M3:M" & ir)

End With

Case pArr(3)

ir = S.Range("I65535").End(xlUp).Row

If ir <= 2 Then ir = 3

pObj.Chart.SetSourceData Source:=S.Range("J2:J" & ir)

With pObj.Chart

.HasTitle = True

.ChartTitle.Text = S.Range("I2").Value

pObj.Chart.Axes(xlValue).CategoryNames = S.Range("I3:I" & ir)

End With

End Select

'导出图片

pObj.Chart.Export Filename:=ThisWorkbook.Path & "\" & pObj.Name & ".jpg", filtername:="jpg"

End If

Next pObj

首先对工作表进行遍历,找到所有Shape对象,筛选出图表对象,然后再对图表进行一些设置。

本示例中的图表要手动制作完成,具体方法省略。

重点代码:

pObj.Chart.SetSourceData Source:=S.Range("F2:F" & ir) '设置数据区域

.ChartTitle.Text = S.Range("M2").Value'设置图表标题名称

pObj.Chart.Axes(xlSeriesAxis).CategoryNames = S.Range("M3:M" & ir)'设置X坐标轴名称

'导出图片

pObj.Chart.Export Filename:=ThisWorkbook.Path & "\" & pObj.Name & ".jpg" _

, filtername:="jpg"

上述代码实现对图表进行设置之后,然后导出为一个JPG文件,也就是导出一张图片,再将图片引入窗体Image控件中。

For Each xP In pArr

Set pObj = Me.Controls.Add("Forms.Image.1", xP)'新建图片控件

With pObj

.Width = 450

.Height = 220

If pi < 2 Then

.Left = pi * (.Width + 20) + 50

.Top = Me.Label1.Top + Me.Label1.Height + 10

Else

.Left = (pi - 2) * (.Width + 20) + 50

.Top = Me.Label1.Top + Me.Label1.Height + .Height + 20

End If

'设置图片

.Picture = LoadPicture(ThisWorkbook.Path & "\" & xP & ".jpg")

.PictureSizeMode = 1

End With

pi = pi + 1

Next xP

上图为窗体显示结果,这个思路就是由图表生成图片,然后把图片导入窗体中。

VBA可实现的功能实际上有很多,只是需要投入一些精力来进行学习和实践。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多