创建自定义列匹配指定日期区间 公式无匹配结果如何解决
Power Query自定义列匹配指定日期区间方案
完全可以创建自定义列实现日期区间匹配,你写的公式无法返回预期结果,核心原因有两个:
- 区间判断逻辑错误:若要匹配2019-09-01到2022-04-01之间的日期,你当前写的两个判断条件为
<= #date(2019,09,01)和< #date(2022,04,01),两个条件同时成立时仅能筛选出2019-09-01及更早的日期,第二个比较条件的方向写反了,无法覆盖两个日期中间的区间。 - 同列返回值类型冲突:公式满足判断条件时返回文本类型的
"Yes",不满足条件时返回日期类型的原始值,同一列混合文本、日期两种数据类型时,Power Query的类型识别会出现异常,直接导致匹配结果展示、筛选不符合预期。
修正方案
首先明确你要匹配的区间边界,统一所有返回值的数据类型:
如果你的目标是匹配*2019年9月1日(含)到2022年4月1日(不含)*之间的日期,使用以下公式:
= if [#"Start Date (Calculated 2)"] >= #date(2019,9,1) and [#"Start Date (Calculated 2)"] < #date(2022,4,1) then "Yes" else "No"
如果你的目标确实是匹配2019年9月1日及更早的日期,仅需要把else分支的返回值统一为文本类型即可:
= if [#"Start Date (Calculated 2)"] <= #date(2019,9,1) and [#"Start Date (Calculated 2)"] < #date(2022,4,1) then "Yes" else "No"
排查补充
如果修改公式后依然无法正常匹配,先检查[#"Start Date (Calculated 2)"]列的类型:选中该列,在顶部「转换」选项卡中确认数据类型为「日期」,如果是文本类型,先转换为标准日期类型再做比较,否则会按文本字符规则比较大小,结果完全不符合日期判断逻辑。
M公式中#date(年,月,日)的月、日参数带前导0不影响计算结果,不需要额外调整。
内容的提问来源于stack exchange,提问作者Dennis Mensah
相关产品推荐
相关产品推荐

