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可實現的功能實際上有很多,隻是需要投入一些精力來進行學習和實踐。
歡迎關注、收藏
---END---
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!