You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query中如何将含文本与MMM-YYYY日期的列分为三类

解决Power Query混合文本/日期分类问题

步骤1:添加自定义列处理分类逻辑

在Power Query编辑器中,选中目标列(假设列名为Status_Date),点击「添加列」→「自定义列」,输入以下M代码:

let
    // 获取当前月份的起始日期,作为判断基准
    CurrentMonthStart = Date.StartOfMonth(DateTime.LocalNow()),
    // 计算未来两个月后的月份起始,用于区分近期和远期
    Future2MonthsStart = Date.AddMonths(CurrentMonthStart, 2),
    // 尝试转换单元格内容为日期(取当月第一天统一判断),转换失败返回null
    ConvertedDate = try Date.StartOfMonth(Date.FromText([Status_Date], [Format="MMM-yyyy"])) otherwise null,
    // 按规则判断分类
    Category = 
        if [Status_Date] = "Early Term" or [Status_Date] = "Transition" then "当前及未来两个月"
        else if [Status_Date] = "Unknown" then "远期未来月份(排除未来两个月)"
        else if ConvertedDate <> null then
            if ConvertedDate < CurrentMonthStart then "过往月份"
            else if ConvertedDate < Future2MonthsStart then "当前及未来两个月"
            else "远期未来月份(排除未来两个月)"
        else "未分类" // 处理意外的非预期内容
in
    Category

代码细节说明

  • try otherwise:专门处理文本单元格转日期的报错问题,转换失败时返回null,避免整列报错中断流程
  • Date.StartOfMonth:把所有日期统一为当月第一天,确保月份判断的准确性(比如不管是Jan-2024的哪一天,都按2024-01-01判断)
  • 先判断固定文本值,再处理日期内容,逻辑优先级更贴合需求

可选调整:修改时间范围规则

如果需要把“当前及未来两个月”定义为当前月+接下来两个月(共3个月),只需修改Future2MonthsStart的计算:

Future2MonthsStart = Date.AddMonths(CurrentMonthStart, 3)

额外注意点

  • 若日期文本存在大小写不一致(比如JAN-2024),可在Date.FromText中补充文化参数确保转换成功:
    ConvertedDate = try Date.StartOfMonth(Date.FromText([Status_Date], [Format="MMM-yyyy", Culture="en-US"])) otherwise null
    
  • 如有其他自定义文本值,直接在if判断中补充对应的分类规则即可

内容的提问来源于stack exchange,提问作者yan peng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 06:35:14