ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 综合应用 > GE:人口变化趋势图

GE:人口变化趋势图

作者:绿色风 分类: 时间:2022-08-17 浏览:195
楼主
嘉昆2011
声明
素材来源及网页展示:
  1. http://visualization.geblogs.com/visualization/aging/
ExcelHero—— Daniel Ferry大师作品:
  1. http://www.excelhero.com/blog/2010/09/animated-business-chart-3.html
仿制效果:

 

发帖初衷:
主要梳理回顾制作动态图表的一些常用知识,对其作出归纳,分类,给出链接。

知识点回顾:
数据透视表及切片器
函数:VLookup,Match,Offset,Cell
基础应用:条件格式,名称框使用,保护工作表,添加超链接
图表:柱型图
简单VBA:宏录制,Intersect,调用模块(过程),图片调用显示

制作要点
1,通过数据透视表及切片器的配合使用,不失为对大数据展示动态图的一种取巧方法。

 
相关案例可以参考下列链接:
a,税负经年变化面板图仿制

b,百年奥运百米短跑展示图

c,交互式日历图表


2,通过函数建立链接,读取读取数据,方便后期使用。

 
图中左起,函数从数据透视表中读取相应数据,制作标签
  1. =IF(SelYear="","",SelYear & " Population: " & ROUND(SUM(D4:E24)/1000,0) & " million")
中间为各国家国旗,用函数读取各国国旗的秩序号
  1. =MATCH(B1,CountryA,0)
右边为各国对应颜色的查询表,方便在VBA调用*(参考第五点代码部分)
对各数据序列使用VBA上色可以参考下列链接:
散点图:体质指数


3,插入柱型图,注意设置主次坐标轴的极值对称,美化图表。

4,(1)简易VBA,通过单击单元格建立交互查询
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     If Not Application.Intersect(Target, [CountryA]) Is Nothing Then
  3.         If Target <> Sheet2.PivotTables("PT_B").PivotFields("Country").CurrentPage Then
  4.             Sheet2.PivotTables("PT_A").PivotFields("Country").CurrentPage = Target.Value
  5.             ShowFlag "A"
  6.             Color Target, "A"
  7.         End If
  8.     ElseIf Not Application.Intersect(Target, [CountryB]) Is Nothing Then
  9.         If Target <> Sheet2.PivotTables("PT_A").PivotFields("Country").CurrentPage Then
  10.             Sheet2.PivotTables("PT_B").PivotFields("Country").CurrentPage = Target.Value
  11.             ShowFlag "B"
  12.             Color Target, "B"
  13.         End If
  14.     End If
  15.     'Target.Parent.Calculate
  16. End Sub
注:数据透视表部分由录制宏改写。
其他Intersect在简易VBA及单击单元格切换选项查询,可以参考:
a,如何制作交互式产品销售图表

b,同场加映:百年奥运百米短跑展示图(续)

c,单元格调用文本框


4,(2)调用图片,过程
  1. Sub ShowFlag(s As String)
  2.     With ActiveSheet.Shapes("Flag_" & s)
  3.             .Left = ActiveCell.Left - 50
  4.             .Top = ActiveCell.Top
  5.             '.Visible = True
  6.     End With
  7. End Sub
相关实例:
单元格调用文本框


5,对相应国家序列选择性着色
  1. Private Function GetVLookup(rValue As Range, sList As String, lngColumn As Long) As Variant
  2.     GetVLookup = Application.Evaluate("Vlookup(""" & rValue & """," & sList & "," & lngColumn & ",0)")
  3. End Function

  4. Sub Color(Rng As Range, s As String)
  5.     Select Case s
  6.         Case "A"
  7.             With ActiveSheet.ChartObjects(1).Chart
  8.                 .SeriesCollection(1).Format.Fill.ForeColor.RGB = GetVLookup(Rng, "ColorList", 2)
  9.                 .SeriesCollection(2).Format.Fill.ForeColor.RGB = GetVLookup(Rng, "ColorList", 3)
  10.             End With
  11.         Case "B"
  12.             With ActiveSheet.ChartObjects(1).Chart
  13.                 .SeriesCollection(3).Format.Fill.ForeColor.RGB = GetVLookup(Rng, "ColorList", 2)
  14.                 .SeriesCollection(4).Format.Fill.ForeColor.RGB = GetVLookup(Rng, "ColorList", 3)
  15.             End With
  16.     End Select
  17. End Sub
6,美化图表,条件格式,保护工作表,添加超链接
条件格式用于区别当前所选项目,非激活态项目,所禁选项目。
保护工作表用于只对有效区域进行单击选择。
超链接图标给出原作出处。

 
条件格式相关实例:
a,如何制作交互式产品销售图表

b,如何制作客服仪表盘

c,同场加映:百年奥运百米短跑展示图(续)


 

相比Daniel Ferry大师作品,在不加入动画的情况下,VBA代码有一定程度缩减,可读性和学习性增强。

人口变化图其他相关实例:
1,如何制作动态人口风暴图?

2,Population pyramid(人口金字塔图)


附件:

GE2.rar


2楼
Eric__宇
原来有些10的文件是用07打不开的,今天终于知道了,昆哥好样的。
3楼
嘉昆2011
谢谢E哥哥支持。
切片器是Excel 2010才有的,所以Excel 2007是不能用的。所以适用版本写了Excel 2010以上。
4楼
dgxsdr
下载学习了!
5楼
海洋之星
不错,值得学习,谢谢分享
6楼
wise
学习了

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap