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

如何用可扩展M代码按购买订单唯一值创建日期列并设列数限制?

动态生成多列购买日期(Power Query M代码实现)

完整M代码

let
    // 替换为你的数据源表名
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    // 设置列数上限,可按需修改
    MaxColumns = 60,

    // 自定义函数:生成序数后缀(1→1st, 2→2nd, 3→3rd, 4+→th)
    GetOrdinalSuffix = (num as number) as text =>
        let
            mod10 = Number.Mod(num, 10),
            mod100 = Number.Mod(num, 100),
            suffix = if mod100 >=11 and mod100 <=13 then "th"
                     else if mod10 =1 then "st"
                     else if mod10 =2 then "nd"
                     else if mod10 =3 then "rd"
                     else "th"
        in
            suffix,

    // 生成规范列名:"1st purchase date", "2nd purchase date"...
    GenerateColumnName = (num as number) as text =>
        Number.ToText(num) & GetOrdinalSuffix(num) & " purchase date",

    // 按客户分组,收集各次购买的日期记录
    GroupedByCustomer = Table.Group(Source, {"CustomerID"}, {
        {"PurchaseData", each Record.FromList([PurchaseDate], {GenerateColumnName([PurchaseOrder])}), type record}
    }),

    // 筛选不超过上限的订单号,生成目标列列表
    AllPurchaseOrders = List.Distinct(Source[PurchaseOrder]),
    FilteredOrders = List.Select(AllPurchaseOrders, each _ <= MaxColumns),
    SortedOrders = List.Sort(FilteredOrders),
    TargetColumns = List.Transform(SortedOrders, GenerateColumnName),

    // 扩展记录列,生成最终的多列结构
    ExpandedColumns = Table.ExpandRecordColumn(GroupedByCustomer, "PurchaseData", TargetColumns, TargetColumns),

    // 调整列顺序,将客户ID放在最前
    ReorderedColumns = Table.ReorderColumns(ExpandedColumns, List.Combine({{"CustomerID"}, TargetColumns}))
in
    ReorderedColumns

代码说明

  • 数据源适配:将Source中的Table1替换为你的实际表名,同时确保CustomerID、PurchaseDate、PurchaseOrder与你的数据列名一致。
  • 列数上限控制:修改MaxColumns的值即可限制生成的列数,超过该值的purchase order会被自动过滤。
  • 序数列名自动生成:通过GetOrdinalSuffix函数自动处理序数后缀,保证列名完全符合「1st purchase date」这类格式要求。
  • 动态扩展逻辑:先按客户分组打包购买记录,再基于筛选后的订单号列表动态扩展列,彻底避免手动创建大量列的繁琐操作。

使用步骤

  1. 打开Power Query编辑器,新建空白查询。
  2. 粘贴上述代码,修改Source和列名以匹配你的数据集。
  3. 调整MaxColumns到需要的上限值。
  4. 运行查询即可得到目标结构的表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:20:06