两个文件完全照搬了本坛两位高人的示例,一开始拿到示例文件只能看到实现结果,看不知道两位大侠是怎么做出来的,好像看不懂的不止我一个人, 所以我把我的学习过程分享给大家,主要以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”,所以打开了“名称管理器”(2010版EXCEL的打开方法是:在“公式”选项卡——“定义的名称”分类框里——“名称管理器”), 在这里找到两个公式,这是实现排序显示整个功能的关键部分!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这里来找前辈留下的宝贵知识,解决了很多问题,工作效率提高了不少。非常感谢愿意分享的这些大神级人物! 图表也排序! http://club.excelhome.net/thread-769100-1-1.html (出处: ExcelHome技术论坛) |