ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 图表图形 > 散点图:体质指数

散点图:体质指数

作者:绿色风 分类: 时间:2022-08-17 浏览:137
楼主
嘉昆2011
声明:
仿制素材来源于ExcelHero-----Daniel Ferry先生作品,链接如下:
  1. http://www.excelhero.com/blog/2011/03/excel-animated-business-chart---body-mass-index.html
华盛顿邮报网页上的展示效果:
  1. http://www.washingtonpost.com/wp-srv/special/health/weight-of-the-world-bmi/
为操作方便对数据规模有适量缩减,采用5年的数据集。

主要知识点:
基础操作:文本导入,选择性粘贴&筛选,控件使用;
函数:Vlookup,Index,Offset,名称标签;
VBA:Collection,对特定序列点的着色,名称添加,调用过程。

仿制效果展示:

 

制作步骤提要:
1,文本(选取所需要的列字段)导入Excel文件,文本素材来源于维基百科
  1. http://en.wikipedia.org/wiki/List_of_sovereign_states_and_dependent_territories_by_continent_(data_file)
建立对照表,查询全称:
  1. =VLOOKUP(A1,E$1:F$7,2,)
2,统计国家,配准数据来源不同的区域
  1. =VLOOKUP("*"&H3&"*",B$1:C$261,2,)
注:个别错误值手工修改下。

#小插曲#:对不连续单元格区域的上色(可以同散点图的点上色一同在后面VBA中操作)
a,基础操作:筛选 & 选择性粘贴

 

b,VBA,对字典熟悉的朋友对下面的代码一定不陌生,只不过这里是以Collection为对象。
  1. Private Sub ColContinent()
  2.     Dim colColors As Collection
  3.     Dim c As Range
  4.     Set colColors = New Collection
  5.    
  6.     For Each c In Range("F1:F7")
  7.         colColors.Add c.Interior.Color, c
  8.     Next
  9.    
  10.     For Each c In [ColTest]
  11.         c.Interior.Color = colColors(c)
  12.     Next
  13.    
  14.     Set colColors = Nothing
  15.    
  16. End Sub
3,建立控制面板,设计参数

 

标题:
  1. =Year&" "&REPT(SelCountry,SelCountry<>"None")
选择国家男女体质数据,多单元格数组公式:
  1. =INDEX(DB_BMI,N13:N17,3)
随年份变化的所有国家的男女体质数据,多单元格数组公式:
  1. =INDEX(DB_BMI,Year_Offset+K3:K201,{3,4})
4,图表制作
a,制作背景,对角线,图例,坐标轴等
Y轴误差线制作大小不同的矩形,以标示“正常”,“超重”,“肥胖”区域;
用图中区域外的不可见点制作图例;
友情提醒:图表对名称的添加格式:“=工作簿名称.(xlsx/)xlsm!名称"

 

b,针对不同的国家所处的区域进行上色
  1. Private Sub PointsColorContinent()
  2.     Dim pntColors As Collection
  3.     Dim Rng As Range
  4.     Dim i As Long
  5.    
  6.     Set pntColors = New Collection

  7.     For Each Rng In Sheet2.Range("F1:F7")
  8.         pntColors.Add Rng.Interior.Color, Rng
  9.     Next
  10.    
  11.     For Each Rng In [Country]
  12.         If Rng <> "None" Then
  13.             Rng.Offset(, 1).Interior.Color = pntColors(Rng.Offset(, 1))
  14.             i = i + 1
  15.             With Sheet3.ChartObjects(1).Chart.SeriesCollection(1).Points(i)
  16.                 .Format.Fill.ForeColor.RGB = pntColors(Rng.Offset(, 1))
  17.                 .Format.Fill.Transparency = 0.4
  18.             End With
  19.         End If
  20.     Next

  21.     Set pntColors = Nothing
  22.    
  23. End Sub
有了字典和前面对Collection对象的理解,相信这段代码应该不难理解。

 

5,添加控件,建立链接
a,控件代码,请详见附件(大部分引用原文作者ExcelHero)
b,美化图表

 

附件:

BMI.rar


BMI体质指数图表:
http://www.exceltip.net/thread-39507-1-1.html

进一步美化,达到用鼠标滑过图表数据点显示数据细节(华盛顿邮报网页效果),可参考:
http://www.exceltip.net/thread-38929-1-1.html


最后,祝大家中秋国庆快乐,身体健康哟~
2楼
纵鹤擒龙水中月
学习了
3楼
千年一梦遥
嘉昆的图表还是一如既往的漂亮!

免责声明

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

评论列表
sitemap