ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3434|回复: 4

Excel图表排序详细分析

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-10-20 13:22 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
两个文件完全照搬了本坛两位高人的示例,一开始拿到示例文件只能看到实现结果,看不知道两位大侠是怎么做出来的,好像看不懂的不止我一个人, 所以我把我的学习过程分享给大家,主要以ZZ大神的示例(Sorting_Chart_zz.xls)做说明。
整个功能用到三部分:
1.       数据:图表需要显示的内容
2.       控件:用来选择是否使用排序功能,包含两部分单元格:一个区域存放“升序”“降序”“正常”三个字符串(用于选择排序方式的提示),另一个单独的单无格存放用户选择相应条件对应的数值(这个是做控件的目的,后面的公式会用到),这两个部分被示例的图表挡住了,移开图表就能看到
3.       图表:图表类型无所谓,关键部分是数据链接的内容,不是我们常规操作的那样直接链接一个数据区域,Z神这里用到了公式,由公式自动按要求筛选数据。
一开始和很多人一样,都以为Z神用了宏、VBA,我一开始就是拼命想找这样的东西。后面发现点击图表上的“系列”时公式栏显示有” =SERIES(,Sorting_Chart_zz.xls!Name,Sorting_Chart_zz.xls!Data,1)”这个公式,这表明Z神自己设定了两个数据区域:一个区域名”name”,另一个叫”data”,所以打开了“名称管理器”(2010EXCEL的打开方法是:在“公式”选项卡——“定义的名称”分类框里——“名称管理器”),
在这里找到两个公式,这是实现排序显示整个功能的关键部分!Z神的智慧成果如下:
“data”区域的选择公式:=CHOOSE(Sheet1!$E$2,SMALL(Sheet1!$B$2:$B$6,ROW(Sheet1!$1:$5)),LARGE(Sheet1!$B$2:$B$6,ROW(Sheet1!$1:$5)),Sheet1!$B$2:$B$6)
“name”区域的选择公式:
=CHOOSE(Sheet1!$E$2,LOOKUP(MOD(SMALL(Sheet1!$B$2:$B$6*100+ROW(Sheet1!$1:$5),ROW(Sheet1!$1:$5)),10),ROW(Sheet1!$1:$5),Sheet1!$A$2:$A$6),LOOKUP(MOD(LARGE(Sheet1!$B$2:$B$6*100+ROW(Sheet1!$1:$5),ROW(Sheet1!$1:$5)),10),ROW(Sheet1!$1:$5),Sheet1!$A$2:$A$6),Sheet1!$A$2:$A$6)
公式摆出来后各位自己研究一下就能悟出道道来,改成自己想要的东西就相对简单多了。这里就不详细解释这些公式了,参考F1帮助是能理解的。
再次感谢两位大神的无私奉献,我们是来学习的,但是看到有的网友给他们两位的留言不怎么客气,对于大神们所做的东西如果一下没整明白应该自己先琢磨一下,大神们可能觉得有些东西太简单,不值得提就跳过去了。他们愿意分享出来我们就该知足了。很长时间以来我基本上没在论坛出声,只是在需要用到新知识的时候才来excelhome这里来找前辈留下的宝贵知识,解决了很多问题,工作效率提高了不少。非常感谢愿意分享的这些大神级人物!
zxzyer2009分享的链接,里面有zzmxy提供的示例:
图表也排序!
http://club.excelhome.net/thread-769100-1-1.html
(出处: ExcelHome技术论坛)

图表也排序.rar

9.17 KB, 下载次数: 116

Sorting_Chart_zz.rar

5.39 KB, 下载次数: 67

TA的精华主题

TA的得分主题

发表于 2018-7-30 15:09 | 显示全部楼层
有哪位能分析下另外个大神做的公式么,看来看去还是不懂啊,谢谢

TA的精华主题

TA的得分主题

发表于 2020-2-27 15:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
    案例中实现了根据选择来实现降序,升序或者原序排列,其实,只要看懂了其中的升序排列就很简单了,然后再多加个if函数就实现三种选择了。
     升序只需要以下两个公式即可,降序就把small函数改成large就可以了。附件有详细步骤及说明:
=T(OFFSET(Sheet1!$A$1,MATCH(SMALL(OFFSET(Sheet1!$B$2,,,COUNTA(Sheet1!$B:$B)-1,1),ROW(Sheet1!$A$1:$A$4)),Sheet1!$B$2:$B$5,),))

=SMALL(Sheet1!$B$2:$B$5,ROW(Sheet1!$A$1:$A$4))

升序图表的步骤及公式.rar

81.11 KB, 下载次数: 40

TA的精华主题

TA的得分主题

发表于 2022-10-12 12:37 | 显示全部楼层
1J46 发表于 2020-2-27 15:45
案例中实现了根据选择来实现降序,升序或者原序排列,其实,只要看懂了其中的升序排列就很简单了,然后 ...

我测试了下 销量有相等的话会出错

TA的精华主题

TA的得分主题

发表于 2022-10-12 12:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-28 22:39 , Processed in 0.047994 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表