网上有很多关于中国GDP在世界各国中排名变化的视频,相信大家都有看到过,数据变动的过程看起来非常震撼,让人热血沸腾。
感兴趣的小伙伴们请摆好姿势继续往下看,动态柱形图制作教程。
一、世界各国的GDP数据从哪儿来?
1. 浏览器搜索:世界银行数据库中文版。
2. 搜索GDP,选择第一个GDP(现价美元)。
3.右边有个下载数据,可以根据需要下载对应的数据类型,本次咱们下载Excel数据。
4.如果下载不了,可以点击查看详细信息。
5.点击所有元数据。
6.跳转到世行中文数据库网站。
6.设置数据的查询条件,设置Time为50年。
7.条件设置完毕右边的下载选项中选择Excel即可下载。
8.下载下来的数据因为金额太大显示成科学计数方式了,在制作图表前还需要对数据进行降位处理。
二、图表中还用到另一份数据,我国年度大事记
这份数据小伙伴们可以直接用搜索引擎去查找,文末也会提供下载方式。
三、数据准备完毕即可开始图表制作
第一步:对GDP数据进行降位处理。
技巧:选择性粘贴–运算–除 1000000000,这么多个零数数清楚了吗?
答案:十亿。
第二步:以2018年的数据为基准做一次降序排列。
目的是让数据按GDP按从大到小进行排列,但是这只是一个年度的,其他年代的GDP数据也需要排序怎么办?请继续往下看,答案即将揭晓。
第三步:新建一个辅助表,复制数据源中第一个年度前50个国家的数据。
为啥是50,而不是100?因为我们的图表最终只取排名前10的国家,前面我们对原数据以2018年度做了一次降序排列,所以取前50个足够,排名太后的已经没有分析意义了。
第四步:对辅助表中的数据进行动态排名
用到排名函数=Rank(当前数字,需排名的数据区域,1升序或0降序排列)
A列的国家固定不变,B列需要动态的换成1969至2018年的数据,C列的排名函数会自动计算出当前最新的排名。
第五步:从动态排名的数据中取出排名前十的国家和金额
这时候需要用到一个万金油组合公式MATCH和INDEX
MATCH函数负责根据排名数字查找它在动态排名中的位置(行位置)
INDEX函数负责根据行位置取在同一行中的国家和GDP数据
排名1-10是固定不变的,需要根据这个不变的数字去左边动态的取出这个数字对应的国家和DGP数据。
例如:
固定排名2–Match对应动态排名中转2所在的行为第4行–index从A列中取出第四行的数据=日本,同理可取出对应的GDP数据。
第六步:对中国的GDP数据单独显示
因为数据会动态变化, 为了保证中国永远显示成红色柱子,所以再加一列用来只显示我们中国的GDP数据,这个用IF函数很容易处理。
=IF(F2=\”中国\”,G2,0)
第七步:对数据生成柱形图并设置样式。
7.1 选中数据区域,插入一个簇状柱形图
7.2 设置系列格式,系列重叠为100%,这样中国有两跟柱子会重叠成一个红色的柱子。
7.3设置坐标轴格式为逆序类别,让金额大的线上最前面。
7.4 修改图表标题、删除横向坐标、删除表格网线
7.5 调整分类间距到50%,让柱子变大些、设置图表区域为浅灰色。
7.6 给每个柱子填充你喜欢的颜色并添加数据标签。
7.7 插入一个矩形链接到单元格=$F$1,用来显示当前数据的年份。
7.8 再插入一个矩形框链接到单元格=$I$1,I1单元格通过VLOOKUP公式去我们提前准备的[大事记]里面查找对应的事项。
至此我们的动态图表终于完成了50%
四、让柱形图动起来
如何才能动起来?
只要能让1969~2018的数据一年一年的按顺序更新到这里即可。
手动搬动这些数据是不可能的,接下来祭出咱们的王炸VBA代码,让它来帮我们完成这些数据更新。
\’这个是用来延时的,防止图表刷新过快Private Declare Sub Sleep Lib \”kernel32.dll\” (ByVal dwMilliseconds As Long)Sub DynamicChart() \’总共是50年的数据,存放在第2列至第51列 For col = 2 To 51 \’取出前四位组合成年份 ThisWorkbook.Sheets(\”demo\”).Range(\”B1\”) = Left(ThisWorkbook.Sheets(\”Data\”).Cells(1, col).Value, 4) & \”年\” \’将数据分割成5份,目的是让数据变动的更欢快些、看起来效果更明显 For i = 1 To 5 \’禁止刷新公式,自动计算 Application.Calculation = xlCalculationManual \’将数据填充到辅助表中 For rw = 2 To ThisWorkbook.Sheets(\”demo\”).Range(\”A65536\”).End(xlUp).Row \’因为辅助表中的国家位置是和数据源的位置保持一致的,所以只需要将GDP数据更新过去,分5次更新过去 ThisWorkbook.Sheets(\”demo\”).Range(\”B\” & rw) = (ThisWorkbook.Sheets(\”Data\”).Cells(rw, col).Value / 5) * i Next \’数据填充完成,刷新公式,自动计算 Application.Calculation = xlCalculationAutomatic \’延时100毫秒 Sleep 100 Next NextEnd Sub
五、VBA代码如何使用?
- 在Excel界面,按快捷键ALT F11进入VBE界面。
- 点击左边的工程窗口,点击鼠标右键,新建一个模块。
- 把代码贴入到模块中。
- 按Crtl S保存,关掉当前界面即可回到原来的Excel界面。
六、代码保存进去了如何使用(触发)它?
在开发工具选项卡中插入一个按钮到Excel表中,会弹出一个关联代码函数的弹窗,选中函数名关联即可。
最终实现效果,点击按钮图表就可以动起来了。
还没关注的老铁,赶紧点击关注吧!
回复\”GDP\”获取本次案例文件
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。