excel中怎样用公式获取表单控件_看到这Excel图表,没有理由不激动

本文介绍如何使用Excel制作动态数据地图,展示各省解放的过程。通过VBA代码和动态数据源实现地图上各省份颜色随时间变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a08d8ee0ab4c2db713289936eee4771f.png

附详细代码及案例文件!!!

先看效果图

知乎视频​www.zhihu.com

关于数据地图,相信很多朋友还不是很了解,不过没关系,相信你看完这篇文章,你也可以用Excel做出这炫酷的图表。

在这之前,我们要先了解静态数据地图的制作方法

https://zhuanlan.zhihu.com/p/131623552​zhuanlan.zhihu.com

学会静态做法之后,动态效果实现起来就很简单了

咱开始吧

aa2c77c941160a72492860d97e890561.gif

明确目标:

我们要实现的效果是,当该省被解放时,地图中该省的位置要涂上红色。即当台湾省解放时,台湾省就会被涂上红色。(如上图所示)

步骤:

「数据获取」

从网上搜索全国各省的解放时间,因省内各地解放时间不同,故以省会解放时间作为该省解放时间。

「数据建模」

构建一个动态数据源,如下图,1代表解放,0代表未解放,一开始全部数据都是0,当变为1时,表示该省解放了。

4341423c7cb75d2e1bd9ba00b152b965.png

上图表示黑龙江、山东、吉林、河南、辽宁已解放,其它0的为解放。

那么新的问题来了,要怎么实现0自动变为1呢,总不能一个个的逐个输入吧?

如果手动逐个输入,不仅慢,而且还会影响解放的速度。

在此介绍大家一个压箱底,吐血整理了5小时的秘籍:移花接木大法

在B2输入=IF($I$2>ROW(A1)-1,1,0),然后下拉填充公式。

通过此方式,只需在I2单元格输入数字,B列的值就会按照公式要求从0变为1。

ccfacce61a65ec178f905879cc92f7ca.png

解决了逐个手动输入的问题,但是又出现了一个问题。

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这个宏→确定→修改按钮名称

99563536c007f8f32900dc3e5313e641.gif

点击按钮,开始解放

此外,还可以在地图上方用OFFEST函数获取解放的省份名称和时间,通过文字与地图的配合,能够让文字也动态变化,效果如下。

96854590808621a8260b0b522838afb1.gif

动态数据地图的教程就到这了,如果觉得有用,点个赞支持下呗

只要循序渐进,相信大家都可以学会的。

还有这份超多人收藏的老板报表,分享给你

https://zhuanlan.zhihu.com/p/203401342​zhuanlan.zhihu.com

adcaf26d2c0fd6a50a9684d830d71499.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值