打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
教程:会“说话”的地图
userphoto

2023.10.23 广东

关注
不想看教程,也可直接拉到最下方获取成品Excel文件。
这次我们要做的是,在以下静态数据地图的基础上,做一个视觉冲击力更强的动态数据地图。

这个动态效果实现起来也不难,数据构造+动态控件

明确目标:
我们要实现的效果是,当该省被解放时,地图中该省的位置要涂上颜色。即当台湾省解放时,把地图上的台湾省涂上红色。

步骤:
「数据获取」
从网上搜索全国各省的解放时间,以省会解放时间作为该省解放时间。

数据建模」
构建一个动态数据源,如下图,1代表解放,0代表未解放,
一开始全部数据都是0,当变为1时,表示该省解放了。
表示黑龙江、山东、吉林、河南、辽宁已解放

那新的问题来了,如何能自动控制1的变化呢,总不能一个个的逐个输入吧?
如果手动逐个输入,不仅慢,而且还会影响解放的速度。

介绍一个移花接木大法
在B2输入=IF($I$2>ROW(A1)-1,1,0),然后下拉填充公式。
通过此方式,只需在I2单元格输入数字,B列的值就会按照公式要求从0变为1。
解决了逐个手动输入的问题,但是又出现了一个问题。I2单元格的值该怎么输入呢?
接下来是最关键的一步,也是最难的一步,那就是利用VBA代码控制I2的数值变化。看到VBA,也许已经有人开始打退堂鼓了。

其实没关系,会用就行
代码如下:
Sub auto_play()For y = 1 To 33'从1开始数字到33结束数字   Range("map!i2").Value = y   '将数字填充到I2   Application.CalculateFull   '全部重新计算   Call fill_color   '调用填色过程   Application.Wait (Now + TimeValue("0:00:01"))   '延时1秒   Next yEnd Sub

fill_color功能的代码如下,与静态数据地图的代码相同
Sub fill_color()For i = 2 To 34 '2和34为数据源的起始和结束行    Range("省份").Value = Range("map!a" & i).Value    '将A列的省份填入到F9单元格    ActiveSheet.Shapes(Range("省份").Value).Select    '选中当前省份所对应的地图    Selection.ShapeRange.Fill.ForeColor.RGB = Range(Range("颜色").Value).Interior.Color    '将选中的图形填充F11单元格指向的颜色    Next iEnd Sub
把这两行代码插入VB窗口中的代码区,然后保存为.xlsm格式的工作簿。
至此,动态功能已经实现!

接下来再做一个按钮,让用户只需轻轻一点,就能实现全国解放的动态效果。
开发工具→插入→表单控件→按钮→选中auto_play这个宏→确定→修改按钮名称
点击按钮,开始填充

此外,还可以在地图上方用OFFEST函数获取解放的省份名称和时间,通过文字与地图的配合,效果会更好。
动态数据地图的教程就到这了,没学会的朋友可参考上一篇文章,再来学习动态地图。循序渐进,相信大家都可以学会的。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
动态获取单元格区域一(currentregion)!
动态PPT模板制作全过程(视频教程)
VBA之动态使用数据有效性
Excel如何制作动态模糊匹配的下拉菜单?
Excel中制作可自动运行的动态图表,让你的演示与众不同!
利用工作薄事件动态标记相同的数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服