ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 对于外部筛选取消或保留的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-12-20 17:50 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 gavin.w 于 2020-12-22 21:08 编辑

如图所示,需要计算每个月近半年的销售额和购买客户数,即保留行标签的外部筛选,但取消切片器的外部筛选。
尝试写了两个度量值,但返回的值还是不对。

希望大佬拨冗指点。

谢谢。

  1. 销售额_近半年 =
  2. CALCULATE(
  3.     [销售额],
  4.     DATESINPERIOD('日期'[日期],ENDOFMONTH('日期'[日期]),-6,MONTH)
  5. )
复制代码

  1. 购买客户_近半年 =
  2. VAR _Half=
  3. CALCULATE(
  4.     [销售额],
  5.     DATESINPERIOD('日期'[日期],ENDOFMONTH('日期'[日期]),-6,MONTH)
  6. )
  7. Return
  8. CALCULATE(
  9.     DISTINCTCOUNT('客户'[客户ID]),
  10.     FILTER(VALUES('客户'[客户ID]),_Half>0)
  11. )
复制代码



半年销售额和购买客户数.png

半年销售额和购买客户数.zip

590.82 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2020-12-20 20:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ThxAlot 于 2020-12-20 22:22 编辑

第一眼就看到VAR _Half用在FILTER的第二参数了。

可以这么改:
  1. 购买客户_近半年 =
  2. VAR __period =
  3.     DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )
  4. RETURN
  5.     COUNTROWS (
  6.         FILTER ( VALUES ( '客户'[客户ID] ), CALCULATE ( [销售额], __period ) > 0 )
  7.     )
复制代码




TA的精华主题

TA的得分主题

发表于 2020-12-20 23:10 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-21 00:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ThxAlot 发表于 2020-12-20 20:17
第一眼就看到VAR _Half用在FILTER的第二参数了。

可以这么改:

感谢指点,VAR除了不能用在Calculate第一参数,也不能用在Filter的第二参数。

再将问题延伸,场景变成:1)近半年内,且2)客户消费总计大于1千。

1)+2)下的购买客户返回了正确的值,但1)+2)的销售额却有些问题。

还望指点一二。

再次谢谢。

  1. 购买客户_近半年_消费超1K =
  2. VAR __period =
  3.     DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )
  4. RETURN
  5.     COUNTROWS (
  6.         FILTER ( VALUES ( '客户'[客户ID] ), CALCULATE ( [销售额], __period ) > 1000 )
  7.     )
复制代码
  1. 销售额_近半年_消费超1K =
  2. VAR __period =
  3.     DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )
  4. RETURN
  5.     CALCULATE([销售额],
  6.     FILTER ( VALUES ( '客户'[客户ID] ), CALCULATE ( [销售额], __period ) > 1000 )
  7.     )
复制代码


半年销售额和购买客户数_V2.png

半年销售额和购买客户数_V2.zip

598.28 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2020-12-21 08:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gavin.w 发表于 2020-12-21 00:42
感谢指点,VAR除了不能用在Calculate第一参数,也不能用在Filter的第二参数。

再将问题延伸,场景变成 ...
  1. 销售额_近半年_消费超1K =
  2. VAR __period =
  3.     DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )
  4. RETURN
  5.     SUMX (
  6.         FILTER ( VALUES ( '客户'[客户ID] ), CALCULATE ( [销售额], __period ) > 1000 ),
  7.         [销售额]
  8.     )
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-21 20:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 gavin.w 于 2020-12-22 21:07 编辑

感谢足下再次指点,更新了下DAX函数,两种写法返回的结果完全相同。
  1. 销售额_近半年_消费超1K_Calculate =
  2. VAR __period =
  3.     //DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )
  4.     DATESINPERIOD ( '日期'[日期], MAX ( '日期'[日期] ), -6, MONTH )
  5. RETURN
  6. CALCULATE([销售额_近半年],
  7.     FILTER (
  8.         VALUES ( '客户'[客户ID] ),
  9.         CALCULATE ( [销售额], __period ) > 1000
  10.     )
  11. )
复制代码
  1. 销售额_近半年_消费超1K_SumX =
  2. VAR __period =
  3.     //DATESINPERIOD ( '日期'[日期], ENDOFMONTH ( '日期'[日期] ), -6, MONTH )
  4. DATESINPERIOD ( '日期'[日期], MAX( '日期'[日期] ), -6, MONTH )
  5. RETURN
  6. SUMX(
  7.     FILTER (
  8.         VALUES ( '客户'[客户ID] ),
  9.         CALCULATE ( [销售额], __period ) > 1000
  10.     ),
  11.     [销售额_近半年]
  12. )
复制代码


半年销售额和购买客户数_V5.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 17:00 , Processed in 0.032785 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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