[本文軟件Excel 2010]
效果圖:
首先我們看一下數據源?
數據源中第二列是對應圖形的名稱。
首先創建圖形,我們可能在網絡中找到各個地圖的矢量圖形。
不過不是每個地圖圖形都適合我們,或許企業劃分非按照行政區劃分。因此可以嘗試自己繪制,如下圖:?
繪制的方法,可以復制過一張地圖。然后通過插入“形狀”來按照自己的需求描。
完成后,我們在“開發工具”選項卡中選擇插入“組合框”。組合框右鍵“設置控件格式”?
當我們選擇這個組合框時,鏈接的單元格中的數值就會隨之改變,我們的數據就以此變化。
控件鏈接的內容:?
此時需要建立圖例和輔助數據來幫助完成圖形色彩的選擇,如圖:?
因為是從小到大排序,且兼顧控件的數據源,因此公式如下:
第一列,選擇的占比
- =SMALL(OFFSET($R$79:$R$86,0,$N$72-1,8,1),ROW(1:9))
第二列,圖例的標識名稱
- =INDEX($N$79:$N$86,MATCH(M62,OFFSET($R$79:$R$86,0,$N$72-1,8,1),0))
第三列,單元格顏色對應的形狀名稱,此處為拼音,和數據源中的形狀名稱保持一直
- =INDEX($O$79:$O$86,MATCH(N62,$N$79:$N$86,0))
以上均為數組公式,需要按Shift+Ctrl+Enter執行。為了能使圖例顯示清晰,選中第三列右鍵“設置單元格格式”,“自定義”,類型中輸入三個分號,即“;;;”。
此操作會使公式形成的內容不可見。如圖?
接著就是定義單元格的顏色名稱,定義的顏色名稱會被引用添加至圖形的填充顏色。
“公式”選項卡“名稱管理器”新建各個單元格的名稱,如圖:?
隨后按Alt+F11打開VBE編輯器,輸入圖形填充的VBA代碼:
- Sub 圖表填色()
- On Error Resume Next
- For i = 62 To 69
- ? ? ActiveSheet.Shapes(Range("O" & i).Value).Select
- ? ? Selection.ShapeRange.Fill.ForeColor.RGB = Range(Range("P" & i).Value).Interior.Color
- ? ? Next i
- End Sub
然后右鍵控件“指定宏”?
選擇剛才創建的宏名稱。?
此時如果我們選擇控件“組合框”的內容,將會得到不一樣的圖表類型。不過為了得到更好的顯示效果,我們可以采用照相機的方式來組合。
首先將照相機找到,并添加到快速訪問工具欄。位置是“開始”,“選項”,如下圖:?
選擇我們已經完成的圖形所在的單元格,然后點擊“照相機”。接著在需要的位置拖動鼠標,即可放置圖片。此時再選擇圖例,照相機,拖動鼠標,完成圖例放置。
這樣就完成了一個跟隨控件變化而變化的圖表了。
?
?源文件可查看下面的附件。
附件:http://down.51cto.com/data/2359859\
本文轉自
kirin?51CTO博客,原文鏈接:http://blog.51cto.com/kirin/782628?,如需轉載請自行聯系原作者