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

如何在Power Query中动态使用List.Range函数,拆分列时生成Category列的H、I、J、K行

Power Query 动态生成多分类行实现方案

实现逻辑

核心思路是先把合并的分类范围拆成单独的分类列表,再扩展为行,全程用到你要求的三个函数,不需要硬编码H/I/J/K,分类范围变动可自动适配。

具体操作步骤

  • 第一步:导入源数据进入Power Query编辑器
  • 第二步:选中现有数据,点击「添加列」选项卡,选择「自定义列」,输入以下M语言公式:
= let
    // 判断当前Category是否为范围格式(如"H-K")
    isRange = Text.Contains([Category], "-"),
    // 提取范围起始分类
    startCat = if isRange then Text.BeforeDelimiter([Category], "-") else [Category],
    // 提取范围结束分类
    endCat = if isRange then Text.AfterDelimiter([Category], "-") else [Category],
    // 预定义分类取值的全集,可根据实际业务规则调整
    allCats = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"},
    startIndex = List.PositionOf(allCats, startCat),
    endIndex = List.PositionOf(allCats, endCat),
    // 截取对应范围的分类列表
    catList = List.Range(allCats, startIndex, endIndex - startIndex + 1)
in
    catList
  • 第三步:点击自定义列右上角的扩展按钮,选择「扩展为行」,即可得到所有分类对应的单独行,Month、Cost字段会自动匹配对应的值。

用到的函数说明

  • Text.BeforeDelimiter(文本, 分隔符):提取指定分隔符左侧的文本内容,本场景中用来获取分类范围的起始值(如"H-K"中的H)
  • Text.AfterDelimiter(文本, 分隔符):提取指定分隔符右侧的文本内容,本场景中用来获取分类范围的结束值(如"H-K"中的K)
  • List.Range(列表, 起始索引, 取数个数):从指定列表中截取对应区间的元素,本场景中通过预定义的分类全集,直接截取从H到K的所有分类,自动生成完整序列

适配说明

如果你的分类分隔符不是短横线,或者分类编号规则不是大写字母,只需要修改公式中的分隔符参数和allCats的列表内容即可,无需修改核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:27:01