科学研究表明,人类接受不同类型信息的难易程度(由难到易):文字<数字<图片<动画<视频。
通过前面的内容我们已经学会如何将多个工作表数据汇总(分类汇总之多个工作表合并到同一张工作表中),会用数据透视表与切片器从不同唯独分析数据(数据透视表与切片器)。本节我们学习如何巧用vba获取动态数值,作为offset函数(offset函数与Excel动态图表)的参数,生成动态数据区域,并用名称管理器定义该区域,然后插入合适类型的图表,并将名称管理器自定义的数据区域作为图表数据源。
本次内容仍使用之前网抓的的2008-2019中国电影排行榜数据(汇总后的数据)。
一、Excel中生成动态图表。动态展现2008-2019年每年票房排行榜前25电影的票房数据:
第一步,借助数据透视表,整理所需要的数据,得到下图所示数据
第二步,巧用vba代码动态控制年份变化,并将当前的结果输出到指定单元格中,代码如下:
'动态控制年份变化 Sub year() If Range("h2") < 2019 Then Range("h2") = Range("h2") 1 Else Exit Sub End If '每隔三秒变化H2单元格的值 Application.OnTime Now TimeValue("00:00:03"), "year" End Sub '设置起始年份为2008 Sub initiate() Range("h2") = 2008 End Sub
第三步,增加辅助单元格,引用上一步的动态数值。在F2单元格输入公式=(H2-2008)*25 1(H2为动态年份,每年有25组数据,offset函数从第一行开始,每次向下偏移25行),计算结果作为offset函数参数,控制offset函数向下偏移的行数。
第四步,定义名称,用第三步中的两个参数,通过offset函数获取动态数据区域。新建影片名=OFFSET(Sheet2!$B$1,Sheet2!$F$2,0,25,1)和总票房=OFFSET(Sheet2!$C$1,Sheet2!$F$2,0,25,1)两个名称
第五步,插入条形图。选择数据区域为第三步定义的名称---->调整图表大小至合适大小---->设置图表样式---->选中纵轴坐标---->逆序刻度值---->添加数据来源---->修改图表标题并用文本框引用公式实现标题动态变化---->插入命令按钮,并将第二步中的宏链接到按钮上。
第六步,点击命令按钮,查看动态效果。
二、借助可视化工具Flourish生成动态图,动态展现2008至当前排名前10电影的名称和票房数据。
第一步,选择里面的Bar chart race 模板,点击data,查看所需要的数据格式,将数据整理成模板里面的格式
第二步,导入数据(注意选择数据所在工作表),修改设置内容,保存和发布可视化结果。
可视化结果观看地址:public.flourish.studio/visualisation/489206/
西瓜视频地址:ixigua/i6712392102887555587/
数据和图表下载地址:/s/1xCds79hmbgbfvG-T6Jg_9A
提取码:w82b
,