ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 多层级排名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-9 23:09 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助


各位老师:

下午好!请老师和大神们提供一些帮助。(刚才的帖子不看不见,重发一帖)

期望实现按层级排名,一级分类和部门两个层级。下面的度量值该如何修改:

年初至今客单价增长排名 =
IF(
    HASONEVALUE('部门分类'[部门]),
    RANKX(
        ALL('部门分类'[部门]),
       [年初至今客单价增长],,DESC,Dense
    )
)

部门分类表:包含""一级分类"",""部门"",共两列。
日期表:包含""日期"",""年"",""月"",共三列   

ThxAlot老师指出,用SINSCOPE先把层级区分开;然后在各自层级内再进行排名。
  • RANK =
  • SWICH( TRUE,
  • ISINSCOPE('部门信息'[人员]), RANKX(),
  • ISINSCOPE('部门信息'[小组]), RANKX(),
  • ISINSCOPE('部门信息'[部门]), RANKX(),
  • ISINSCOPE('部门信息'[分公司]), RANKX(),
  • ...)

[color=rgb(51, 102, 153) !important]复制代码


可以实现更多层级的分类排名。但是我钻了半天,还是没能成功。请大神老师协助。

销售分析.zip

137.66 KB, 下载次数: 20

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-9 23:38 | 显示全部楼层
糟糕啦,20分钟过去了,怎么还没有一个老师下载我的附件
这也太难了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-9 23:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
年初至今销售额增长排名 =
SWITCH(TRUE,
    ISINSCOPE('部门表'[ 一级分类]),
        RANKX(
            ALL('部门表'[ 一级分类]),
            [年初至今销售额增长],,DESC,Dense
        ),
    ISINSCOPE('部门表'[ 二级分类]),
        RANKX(
            ALL('部门表'[ 二级分类]),
            [年初至今销售额增长],,DESC,Dense
        ),
    ISINSCOPE('部门表'[部门]),
        RANKX(
            ALL('部门表'[部门]),
            [年初至今销售额增长],,DESC,Dense
        )
)

这样单级的向下钻取,能显示正确的排名,就是不能分两级或三级展工开显示,展开的第二、三级排名是错误的。

TA的精华主题

TA的得分主题

发表于 2020-11-10 08:18 | 显示全部楼层
可口可乐101 发表于 2020-11-9 23:51
年初至今销售额增长排名 =
SWITCH(TRUE,
    ISINSCOPE('部门表'[ 一级分类]),

我把度量值的写法都简化了一下(虽然性能上不一定会提升),另外你提到的这个分层级排名的度量值也修改了一下,供参考:
  1. 年初至今增长排名 =
  2. SWITCH (
  3.     TRUE (),
  4.     ISINSCOPE ( '部门表'[部门] ),
  5.         RANKX (
  6.             ALLSELECTED ( '部门表'[部门] ),
  7.             CALCULATE ( [年初至今增长], ALLEXCEPT ( '部门表', '部门表'[部门] ) )
  8.         ),
  9.     ISINSCOPE ( '部门表'[ 二级分类] ),
  10.         RANKX (
  11.             ALLSELECTED ( '部门表'[ 二级分类] ),
  12.             CALCULATE ( [年初至今增长], ALLEXCEPT ( '部门表', '部门表'[ 二级分类] ) )
  13.         ),
  14.     HASONEVALUE ( '部门表'[ 一级分类] ), RANKX ( ALLSELECTED ( '部门表'[ 一级分类] ), [年初至今增长] )
  15. )
复制代码

销售1110.zip

74.38 KB, 下载次数: 12

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-10 09:48 | 显示全部楼层
ThxAlot 发表于 2020-11-10 08:18
我把度量值的写法都简化了一下(虽然性能上不一定会提升),另外你提到的这个分层级排名的度量值也修改了 ...

老师,辛苦您了。您的度量值写得非常棒。
之前我有一点没表述清楚。现在发图片给你参照。
我希望得到展开后的效果是在相应的层级内重新排名。
偿试了改了几次,没摸清门道,没修改成功。烦请老师再帮我改改。万分感谢!
图1.png
图2.png
图3.png
图4.png
图5.png

TA的精华主题

TA的得分主题

发表于 2020-11-10 15:35 | 显示全部楼层
本帖最后由 makarria 于 2020-11-10 15:37 编辑

image.png

dax表达式如下
部门排名 = SWITCH (
    TRUE (),
    ISINSCOPE ( '部门表'[部门] ),
        RANKX (
            ALLSELECTED ( '部门表'[部门] ),
          [金额总计],
        ),
    ISINSCOPE ( '部门表'[ 二级分类] ),
        RANKX (
            ALLSELECTED ( '部门表'[ 二级分类] ),
             [金额总计],
        ),
    HASONEVALUE ( '部门表'[ 一级分类] ), RANKX ( ALLSELECTED ( '部门表'[ 一级分类] ), [金额总计] )
)我没有写那个什么年初至今销售,你把[金额总计]换成你那个度量值就可以了

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-10 16:17 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
makarria 发表于 2020-11-10 15:35
dax表达式如下
部门排名 = SWITCH (
    TRUE (),

感谢makarria老师,您这个度量值用于计算销售总额完全没问题。和楼上老师是一样的架构。问题出在计算“累计年初至今增长额”这个被引用的度量值这里。这里好像是不能直接引用。

TA的精华主题

TA的得分主题

发表于 2020-11-10 16:25 | 显示全部楼层
本帖最后由 makarria 于 2020-11-10 16:27 编辑
可口可乐101 发表于 2020-11-10 16:17
感谢makarria老师,您这个度量值用于计算销售总额完全没问题。和楼上老师是一样的架构。问题出在计算“累 ...

你把你累计年初至今增长额这个dax给我贴出来看看呢我用的desktop的版本和你的不一样,打不开你那个pbi文件

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-10 17:14 | 显示全部楼层
makarria 发表于 2020-11-10 16:25
你把你累计年初至今增长额这个dax给我贴出来看看呢我用的desktop的版本和你的不一样,打不开你那个pbi文 ...

年初至今 = IF(HASONEVALUE('日期表'[月]), CALCULATE( [销售额], DATESYTD( '日期表'[日期] ) ) )

年初至今增长 =
VAR __prev_year_ytd = CALCULATE([年初至今], DATEADD('日期表'[日期], -1, YEAR))
RETURN
IF(NOT ISBLANK(__prev_year_ytd), [年初至今] - __prev_year_ytd)

年初至今增长排名 =
SWITCH (
    TRUE (),
    ISINSCOPE ( '部门表'[部门] ),
        RANKX (
            ALLSELECTED ( '部门表'[部门] ),
            CALCULATE ( [年初至今增长], ALLEXCEPT ( '部门表', '部门表'[部门] ) )
        ),
    ISINSCOPE ( '部门表'[ 二级分类] ),
        RANKX (
            ALLSELECTED ( '部门表'[ 二级分类] ),
            CALCULATE ( [年初至今增长], ALLEXCEPT ( '部门表', '部门表'[ 二级分类] ) )
        ),
    HASONEVALUE ( '部门表'[ 一级分类] ), RANKX ( ALLSELECTED ( '部门表'[ 一级分类] ), [年初至今增长] )
)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-10 22:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
重新上传附件。

这个问题没这么简单,研究了一下午没研究出来。ALLSELE函数相当难驾驭。请版主和各位大神老师协助。

在此再次感谢ThxAlot老师和makarria老师。

销售分析1110.zip

76.47 KB, 下载次数: 4

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

本版积分规则

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

GMT+8, 2024-11-15 19:55 , Processed in 0.041588 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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