Power BI使用IF/AND函数编写DAX结案时长分类公式问题
DAX结案时长分类公式修正方案
原公式错误点
你写的原公式存在3个核心问题,导致无法正常生效:
- 语法结构错误:
AND函数仅支持传入2个逻辑判断参数,你把结果返回值也错误嵌套进了AND的参数列表,括号匹配完全混乱 - 判断逻辑缺项:校验
Status字段值时漏写了等于运算符=,Sheet1[Status]"Completed"属于非法语法,DAX无法识别该判断条件 - 过滤逻辑缺失:没有针对非Completed状态的案件做排除处理,开放状态的未结案件会被错误纳入计算
修正后可用公式
根据使用场景选择对应写法即可:
场景1:创建计算列(逐行给案件打分类标签)
直接在数据表中新建计算列,粘贴以下公式:
Avg to Closure = SWITCH( TRUE(), // 过滤非已完成状态案件,返回空值不纳入统计 Sheet1[Status] <> "Completed", BLANK(), // 已结案件判断结案时长与平均值的关系 Sheet1[# Days To Close] >= 187, "高于平均结案时长", "低于平均结案时长" )
场景2:创建度量值(适配可视化图表的动态筛选)
如果需要在报表中随筛选器动态统计,可以使用度量值写法:
Avg to Closure Tag = RETURN IF( NOT(ISFILTERED(Sheet1[CaseID])), BLANK(), VAR Current_Status = SELECTEDVALUE(Sheet1[Status]) VAR Current_Days = SELECTEDVALUE(Sheet1[# Days To Close]) RETURN IF(Current_Status <> "Completed", BLANK(), IF(Current_Days >=187, "高于平均结案时长", "低于平均结案时长")) )
公式逻辑说明
- 所有状态不是
Completed的案件会直接返回空值,不会出现在分类统计结果中,自动排除开放状态的未结案件 - 仅对已完成的案件做结案天数判断:大于等于187天标记为高于平均,小于187天标记为低于平均
- 用
SWITCH替代多层嵌套的IF+AND写法,逻辑层级更清晰,避免括号匹配错误
内容的提问来源于stack exchange,提问作者Sc0719
相关产品推荐
相关产品推荐

