Power BI M语言if then条件语句报错 自定义Launch Week列全列异常
问题根因
- 数据类型不匹配:M是强类型语言,若表中的
[Date]列不是日期类型,和#date类型的值做比较会直接抛出错误,不会返回null,这是全列报错的最常见原因。 - 语法冗余错误:你提供的代码片段末尾多了多余的右括号和逗号,放在完整的Power Query步骤链中会触发语法异常。
- 逻辑冗余:逐行判断日期相等的写法容易出现输入错误,也不利于后续维护调整。
修复方案
- 先对
Date列做类型转换,在添加自定义列前新增一步类型转换步骤:
// 请将下方代码中的`#"Previous Step"`替换为你添加自定义列前的上一步步骤名 #"Changed Date Type" = Table.TransformColumnTypes(#"Previous Step", {{"Date", type date}})
- 替换原自定义列代码为区间判断写法,消除逐行比较的冗余问题,同时修正语法问题:
#"Added Custom1" = Table.AddColumn(#"Changed Date Type", "Launch Week", each let CurrentDate = [Date] in if CurrentDate >= #date(2021, 4, 14) and CurrentDate <= #date(2021, 4, 21) then "Week 1 (Apr. 15 - Apr. 21)" else if CurrentDate >= #date(2021, 4, 22) and CurrentDate <= #date(2021, 4, 28) then "Week 2 (Apr. 22 - Apr. 28)" else null )
注意:你原逻辑中包含了4月14日,但周次标签标注的是4月15日开始,若为笔误可自行调整区间起始日期即可。
如果修改后仍有报错,点击单元格旁的错误标识查看具体错误描述,可快速定位剩余问题。
内容的提问来源于stack exchange,提问作者G H
相关产品推荐
相关产品推荐

