ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 求解如何用Power Pivot求指定年纪和科目的前10名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-11-2 15:58 | 显示全部楼层 |阅读模式

今天在函数板块看到一个案例,如图B3和D3分别设置了下拉选项,想要获得选的的年纪+科目得分的前10名显示在下面,如果成绩相同则并列都显示。有一位大神回复是用的PQ解决的问题,好像是用分组管理+自定义函数解决的。求助这基本逻辑思路是怎样的,PQ这个没接触过,函数还可以看公式分析。这个我看不懂,麻烦大家了




动态筛选查找.zip (153.36 KB, 下载次数: 25)

微信图片_20181102155246.png
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-11-2 16:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-2 16:53 | 显示全部楼层
朱荣兴 发表于 2018-11-2 16:14
何必想的那么神秘,这个东西,VBA代码也可以轻松搞定的呀

这。。VBA也不懂呀。。就会些函数。有一个大神用INDEX+OFFSECT解决的,但函数公式特别长,而且好像没有判断死一定是取前10名。所以想。。

TA的精华主题

TA的得分主题

发表于 2018-11-2 17:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个题最简单的方式是用Power Pivot,PQ解比较繁琐、交互也不方便。想了解详细思路可以去问给你提供PQ解法的人

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-2 17:12 | 显示全部楼层
PowerBI极客 发表于 2018-11-2 17:04
这个题最简单的方式是用Power Pivot,PQ解比较繁琐、交互也不方便。想了解详细思路可以去问给你提供PQ解法 ...

说错了,不好意思。就是Excel里面的Power Pivot的模块做的。说是用分组管理还是分层管理的方式。开始以为PQ和Power Pivot是一个东西

TA的精华主题

TA的得分主题

发表于 2018-11-2 18:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 PowerBI极客 于 2018-11-2 18:04 编辑



rank:=RANKX(ALLSELECTED('table'[姓名]),CALCULATE(SUM('table'[分数])),,DESC,Dense)
top10 score:=IF([rank]<=10,CALCULATE(SUM('table'[分数])))
top10 score:=IF([rank]<=10,CALCULATE(SUM('table'[分数])))
top10 rank:=IF([rank]<=10,[rank])

下面是效果图和数据源
snipaste_20181102_175858.png
snipaste_20181102_180000.png

TA的精华主题

TA的得分主题

发表于 2018-11-2 18:06 | 显示全部楼层
xiaoyidemm 发表于 2018-11-2 17:12
说错了,不好意思。就是Excel里面的Power Pivot的模块做的。说是用分组管理还是分层管理的方式。开始以为 ...

你发的文件是用pq做的呀

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-16 10:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
PowerBI极客 发表于 2018-11-2 18:03
rank:=RANKX(ALLSELECTED('table'[姓名]),CALCULATE(SUM('table'[分数])),,DESC,Dense)
top10 score:= ...

感谢您,这个隐藏模块一直没接触过。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-16 10:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
PowerBI极客 发表于 2018-11-2 18:06
你发的文件是用pq做的呀

是的呢。。。弄错了。搞不太清楚那两个东西。刚报了PQ和Power Pivot 的学习班

TA的精华主题

TA的得分主题

发表于 2018-11-17 00:40 | 显示全部楼层
用了几种常见的数据透视表,PowerQuery,Power Pivot,DAX Query 的作法,供参考:

1,Power Query & 数据透视表(Pivot Table)最简单
PQ+PT.gif

2,纯Power Query和数据验证,比原附件简单一些,没有自定义函数,基本都是界面操作,数据刷新慢是因为导入数据模型的关系。

PQ+DV.gif

3,Power Query + Dax Query,刷新慢

  1. EVALUATE
  2. SUMMARIZE (
  3.     TOPN (
  4.         10,
  5.         CALCULATETABLE (
  6.             'Test-PP',
  7.             'Test-PP'[年级] IN VALUES ( Grade ),
  8.             'Test-PP'[科目] IN VALUES ( Subject )
  9.         ),
  10.         'Test-PP'[成绩], DESC
  11.     ),
  12.     'Test-PP'[班级],
  13.     'Test-PP'[姓名],
  14.     'Test-PP'[成绩]
  15. )
  16. ORDER BY 'Test-PP'[成绩] DESC
复制代码


Dax Query.gif

4,Power Query + Power Pivot

  1. =RANKX(ALLSELECTED('Test-PP'),[Score],,DESC)
复制代码


PowerPivot.gif

附件:

动态筛选查找.7z (229.61 KB, 下载次数: 54)

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-5 10:42 , Processed in 0.049165 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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