今天要跟大家分享的是数据地图系列的第九篇——excel(VBA)数据地图!
关于VBA在excel中的应用非常广泛,本篇仅仅是给出示例代码,不会对基础操作做太过详细的讲解。
要说为什么手动操作都可以完成的地图填充,为啥要弄得这么复杂。其实理由很简单,就是效率,可以以一种一劳永逸的方式节省时间、提高效率。
否则你只能每一次都手动操作,重复劳动,想想一下,靠简单几句的代码,就可以瞬间完成批量的图形填充效果,那么花一点儿心思做一套模板(可以循环使用),真的是太值得了。
下面是VBA数据地图的详细制作步骤:
1、首先你需要一个纯色的矢量地图素材。
这个问题早在数据地图的入门篇里已经解决了。
2、图形命名
这里需要我们给每一个省份(或者图形)命名。
选中某一个省份图形,在左上角的名称栏中直接修改定义或者,在绘图工具——选择窗格中,双击该图形默认名称,进行自定义。(中国地图就需要定定义34个省级行政单位名称)。
3、输入数据:
关于作图的数据组织:这里需要三列数据,一列省份名称、一列指标值,一列颜色填充值(需要使用函数自动获取)。
4、定义组距
5、定义颜色填充范围
将F9:G13单元格区域选中并定义名称为color_table
使用concatenate函数制作分段值范围。
将D9-D13区域的五个单元格分别命名为color1~color5。(命名方法同上)
然后将提前准备好的地图填充色复制进D9-D13单元格中。
7、在C4列中匹配B列指标值的颜色范围。(使用vlookup函数)
8、编辑VBA填充代码
Alt+F11打开VBA代码编辑器,在thisworkbook中写入如下代码后关闭VBA窗口。
Sub fill_color()
Application.ScreenUpdating = False '暂停刷新屏幕
For i = 4 To 34 '为数据源的起始和结束行号
ActiveSheet.Shapes(Range("DataMap!A" & i).Value).Fill.ForeColor.RGB = Range(Range("DataMap!C" & i).Value).Interior.Color
'对各省的图形使用其颜色栏的值作为名称所指向的单元格的颜色填充
Next i
Application.ScreenUpdating = True '恢复刷新屏幕
End Sub
9、插入按钮,激活宏代码
插入按钮控件,右键,指定宏并确定。
10、最后鼠标点击一下按钮,看看效果吧。
当然,如果你想更换填充效果的话,可以在五个颜色栏中复制入自己准备好的颜色。
记得在地图做完之后一定要使用分档阀值区域作为图例引用在数据地图周围。选中D9:E13区域,点击照相机功能,然后在数据地图区域释放。
还有一点需要提示一下,这种内涵VBA宏代码的文件需另存为xlsm格式才能保留宏功能,否则就会前功尽弃。
本文分享自微信公众号 - 数据小魔方(datamofang)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3335309/blog/4575949