数据地图系列9|excel(VBA)数据地图!

今天要跟大家分享的是数据地图系列的第九篇——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)

原文发表时间:2016-06-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小李刀刀的专栏

容易被误解的overflow:hidden

为了页面的健壮性,我们常常需要使用overflow:hidden。有时候是为了防止布局被撑开,有时候是为了配合其它规则实现文字截断,还有时候纯粹是为了创建块级上...

410110
来自专栏小李刀刀的专栏

简单、通用的JQuery Tab实现

网页上的空间是寸土寸金,虽然显示器的分辨率越来越大,可是直到今天,网页设计中仍然是以至少1024×768 像素的支持为主,也就是说,每一屏页面只有区区 955×...

48950
来自专栏极客编程

前端的对决:React的JSX与Vue的templates

React.js和Vue.js是这个星球上最流行的JavaScript库。它们都很强大,相对来说很容易获取和使用。

23520
来自专栏Python小屋

Python使用tkinter打造自定义对话框完整代码

问题来源:前一阵发过一个技术文章Python编写抽奖式随机提问程序,其中有个弹出式对话框,好像上海科技大学宋老师在群里当时问了一句对话框中中奖姓名是否能显示的大...

57640
来自专栏Vamei实验室

被解放的姜戈05 黑面管家

Django提供一个管理数据库的app,即django.contrib.admin。这是Django最方便的功能之一。通过该app,我们可以直接经由web页面,...

22090
来自专栏从零开始学 Web 前端

从零开始学 Web 系列教程

在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

26550
来自专栏iKcamp

追溯 React Hot Loader 的实现

文:萝卜(沪江金融前端开发工程师) 本文原创,转载请注明作者及出处 如果你使用 React ,你可以在各个工程里面看到 Dan Abramov 的身影。他于...

492140
来自专栏程序猿

用 Python 向你比个心

之前写了一篇用 Python 画一个小猪佩奇和哆啦 A 梦,然后最近看到有人用 turtle 画了一个心,觉得挺有意思的,于是把代码复制到本地,再加了个播放音乐...

31850
来自专栏阮一峰的网络日志

网页性能管理详解

你遇到过性能很差的网页吗? 这种网页响应非常缓慢,占用大量的CPU和内存,浏览起来常常有卡顿,页面的动画效果也不流畅。 ? 你会有什么反应?我猜想,大多数用户会...

29990
来自专栏互联网杂技

编码规范

不要在自闭合(self-closing)元素的尾部添加斜线 -- HTML5 规范中明确说明这是可选的。 不要省略可选的结束标签(closing tag)(例如...

34570

扫码关注云+社区

领取腾讯云代金券