Excel圖表的數據源通常為一個連續區域,但有時會遇到圖表數據源區域不連續,且需要動態改變的情況。例如下面的某公司人員基本情況匯總表,B列為部門名稱,C至S列分別為“性別”、“年齡”、“學歷”、“職稱”等不同類別數據的匯總,如果將這些數據同時顯示在一個圖表中,顯然不便觀察和比較數據,這時可以用VBA來動態改變數據源,單獨對各個類別進行顯示。
具體的方法是:先在表格中創建一個下拉列表,然后通過下拉列表選擇不同的系列,通過VBA代碼改變圖表數據區域,讓圖表中的數據隨之改變。下面以在Excel 2003中繪制柱形圖為例說明如下:
1.設置下拉列表。設置下拉列表的方法有很多,這里用數據有效性來設置。選擇某個單元格,如T14,單擊菜單“數據→有效性→設置→序列”,在“來源”下輸入“性別,年齡,學歷,職稱”(不含引號)后確定,這樣就在T14單元格中通過數據有效性設置了一個下拉列表。
2.插入圖表。選擇B3:D11區域,即“部門”和第一個類別所在區域“性別”,單擊菜單“插入→圖表→柱形圖→簇狀柱形圖”,單擊“完成”插入一個包含“男”、“女”兩個系列的柱形圖。
3.輸入VBA代碼。按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$T$14" Then
Dim RngStr As String
Select Case Target.Value
Case "性別"
RngStr = "b3:b11,c3:d11"
Case "年齡"
RngStr = "b3:b11,e3:i11"
Case "學歷"
RngStr = "b3:b11,j3:n11"
Case "職稱"
RngStr = "b3:b11,o3:s11"
End Select
ChartObjects("圖表 1").Chart.SetSourceData Source:=Range(RngStr)
End If
End Sub
說明:改變T14單元格中的內容時,圖表的數據區域隨之改變。本例中的圖表名稱為“圖表 1”,需根據實際進行更改。查看圖表名稱的方法是:
Excel 2003:按住Ctrl鍵單擊圖表,在名稱框中即可看到所選圖表的名稱。
Excel 2007/2010:選擇圖表,在“圖表工具-布局”選項卡的“屬性”組中即可看到圖表名稱。
關閉VBA編輯器,返回Excel工作表界面,選擇T14單元格中的不同系列即可在圖表顯示相應類別的數據。