[本文软件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 ,如需转载请自行联系原作者