不想看教程,也可直接拉到最下方获取成品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 y
End 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 i
End Sub
把这两行代码插入VB窗口中的代码区,然后保存为.xlsm格式的工作簿。接下来再做一个按钮,让用户只需轻轻一点,就能实现全国解放的动态效果。开发工具→插入→表单控件→按钮→选中auto_play这个宏→确定→修改按钮名称此外,还可以在地图上方用OFFEST函数获取解放的省份名称和时间,通过文字与地图的配合,效果会更好。动态数据地图的教程就到这了,没学会的朋友可参考上一篇文章,再来学习动态地图。循序渐进,相信大家都可以学会的。