ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 源数据不排序就让图表排序成功了60%, 求大师指点

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-8 18:51 | 显示全部楼层 |阅读模式
很多报表格式固定不能因为一个图表就重新排序,另建表又很麻烦,数据更新也不方便。

所以产生了需求:表不动,在生成的图表里,项目按数据大小排序。

结合网上及坛子里找的经验,采取名称定义法,设x=LARGE(Sheet1!$B$1:$B$10,ROW(Sheet1!$B$1:$B$10)),然后在图表公式里改成=SERIES(,,test.xlsx!x,1),可以解决单列数据图表的自动排序问题。

但一般情况下至少有两列数,如a列是省名单,b列才是数。这时就要求省名单也跟随数据排序正确显示,我用index、match函数设了个新名称y=INDEX(Sheet1!$A$1:$A$10,MATCH(test.xlsx!x,Sheet1!$B$1:$B$10,0),1),

结果,只有第一个省能成功显示,后面的省无显示。

请教:怎么改进彻底解决问题?如果是其他组合图表是否更加复杂(只按一个维度排序,还没试),谢谢。

样本见附件。

test.rar

12.27 KB, 下载次数: 159

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-8 18:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
自顶,谢谢

TA的精华主题

TA的得分主题

发表于 2018-3-8 21:19 | 显示全部楼层
Y
  1. =T(OFFSET(Sheet1!$A$1,MATCH(x,Sheet1!$B:$B,0)-1,))
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-3-8 21:21 | 显示全部楼层
不过数据(就是数值),是可能重复的,3楼这样定义名称就不可行了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-8 23:20 | 显示全部楼层
谢谢版主回复,确实换成这个函数就成功了!

也确实要是有数据重复,那要咋才能解决呢?其实office在图表内增加一个排序功能应该也挺简单的呀,不知道为啥不增加。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-8 23:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢版主回复!

TA的精华主题

TA的得分主题

发表于 2018-3-9 10:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Y
  1. =T(OFFSET(Sheet1!$A$1,MOD(SMALL(RANK(Sheet1!$B$2:$B$10,Sheet1!$B$2:$B$10)*1000+ROW(Sheet1!$2:$10)-1,ROW(Sheet1!$2:$10)-1),1000),))
复制代码

有点长,但逻辑不复杂。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-9 18:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-4-3 11:04 | 显示全部楼层
joshuaxu321 发表于 2018-3-9 18:17
谢谢大拿指导,这个暂时还不行,我再试试

题主 请问你解决了吗 我遇到了同样的问题

TA的精华主题

TA的得分主题

发表于 2018-8-9 15:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主您好,第二个公式不太适合在高版本的EXCEL中使用,修改成如下公式后可以出数据,但是没有按照要求的排序:=T(OFFSET(Sheet1!$A$1,MOD(SMALL(RANK.eq(Sheet1!$B$2,Sheet1!$B$2:$B$10,0)*1000+ROW(Sheet1!$2:$10)-1,ROW(Sheet1!$2:$10)-1),1000),))
我的想法是通过查找出现相同数值的个数来增加序号,但是结果还是不行,麻烦您帮忙改一下,谢谢
=T(OFFSET(Sheet1!$A$1,MATCH(x,Sheet1!$B:$B,0)-1+COUNTIFS(B$1:B1,B2),))
期待您的回复
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 01:07 , Processed in 0.039676 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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