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

Excel Power Query简化产品线判定IF查询方案咨询

简化Power Query产品线归类及报表流程方案

核心思路:用映射表替代冗长IF语句

把所有产品线归类规则从M代码中剥离,放到独立的Excel映射表中,既方便维护,又能让同事直接复用,不用修改代码。

1. 创建产品线映射表

在Excel中新建一个名为产品线映射的工作表,结构如下:

匹配类型匹配值产品线名称
零件号前缀ABC-ABC产品线
零件号前缀XYZ-XYZ产品线
描述关键词液压泵液压产品线
描述关键词传感器传感产品线
  • 匹配类型:分为「零件号前缀」和「描述关键词」,对应两种判断逻辑
  • 匹配值:填写零件号的前缀(如ABC-)或描述中的关键词(如液压泵)
  • 产品线名称:统一的归类名称

2. 在Power Query中编写可复用的匹配函数

打开Power Query编辑器,新建一个自定义函数(点击「主页」→「自定义函数」),粘贴以下M代码:

let GetProductLine = (PartNum as text, Description as text) =>
    let
        // 加载映射表(确保工作表名称与实际一致)
        MappingTable = Excel.CurrentWorkbook(){[Name="产品线映射"]}[Content],
        // 为每条规则添加匹配结果
        EvaluateMatches = Table.AddColumn(MappingTable, "匹配成功", each 
            if [匹配类型] = "零件号前缀" then Text.StartsWith(PartNum, [匹配值])
            else if [匹配类型] = "描述关键词" then Text.Contains(Description, [匹配值], Comparer.OrdinalIgnoreCase)
            else false
        ),
        // 筛选出第一个匹配的规则(优先零件号前缀)
        MatchedRule = Table.SelectRows(EvaluateMatches, each [匹配成功] = true),
        // 返回产品线名称,无匹配则标记为"其他"
        Result = if Table.RowCount(MatchedRule) > 0 then MatchedRule{0}[产品线名称] else "其他"
    in
        Result
in GetProductLine

3. 为发货报表添加产品线列

在发货报表的Power Query查询中,点击「添加列」→「自定义列」,输入公式:
= GetProductLine([Part Numbers], [Descriptions])
重命名该列为Product Line Description,关闭并加载数据到Excel。

4. 优化团队复用性

  • 把包含映射表和Power Query函数的文件保存为Excel模板(.xltx),同事打开模板后,只需导入自己的发货报表数据,刷新查询即可自动生成产品线列。
  • 后续更新归类规则时,只需修改模板中的映射表,所有使用模板的人刷新后就能同步最新规则。

5. 快速对接数据透视表

  • 处理完成的数据选择「仅创建连接」加载到Excel,然后插入数据透视表,选择该连接作为数据源。
  • 字段配置:
    • 行区域:拖入「月份」字段
    • 值区域:拖入「发货数值」(设置为求和)
    • 筛选/列区域:拖入「Product Line Description」
  • 右键数据透视表→「数据」→「刷新」,即可快速更新月份数据;也可设置「打开文件时自动刷新」。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:15:38