You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Pivot Table中获取对应最大报价金额的报价名称(按90天周期维度分组)

如何在Pivot Table中获取对应最大报价金额的报价名称(按90天周期维度分组)

嘿,James,别担心,刚接触Excel透视表的进阶用法确实容易卡壳,我来帮你搞定这个问题!结合你的需求(按客户+90天周期分组,匹配最大报价对应的名称),给你两个实用的解决方案,你可以根据自己的操作习惯选:

方法一:用Power Query分组匹配(适合习惯用数据预处理的场景)

你之前试过Power Query分组但没成功,大概率是没保留每组的原始数据来匹配名称,按下面的步骤来:

  • 第一步:把你的报价数据导入Power Query:点击「数据」选项卡→「从表格/区域」,确认数据有表头后进入Power Query编辑器。
  • 第二步:设置分组规则:点击「转换」选项卡→「分组依据」,在弹出的窗口里:
    • 分组依据:同时勾选ClientLast 90 or Previous 90 Days(这两个是你的核心分组维度,确保每个客户的两个周期都能单独计算最大值)
    • 添加第一个分组列:新列名填「Largest Value」,操作选「最大值」,列选「Quote Value」
    • 点击「添加分组」,添加第二个分组列:新列名填「All Group Rows」,操作选「所有行」(这一步很关键,能保留每组的所有原始报价数据)
  • 第三步:匹配对应报价名称:点击「添加列」选项卡→「自定义列」,输入下面的Power Query公式:
    Table.SelectRows([All Group Rows], each [Quote Value] = [Largest Value])[Quote Name]{0}
    
    这个公式的作用是:从当前组的所有行里,筛选出报价金额等于最大值的那一行,然后提取它的报价名称({0}是取第一个匹配的名称,如果同组有多个相同最大值的报价,你可以把它改成Text.Combine(..., ", ")来合并所有名称)
  • 第四步:清理并加载数据:删除「All Group Rows」列,点击「主页」选项卡→「关闭并上载」,把处理好的数据加载回Excel。之后你就可以基于这个新表创建透视表,直接把「Largest Value」和你刚生成的报价名称列拉进去,配合你的周期切片器就能正常过滤了。

方法二:用DAX度量值(适合用数据模型的透视表)

如果你的透视表是基于数据模型创建的,用DAX度量值会更灵活,步骤如下:

  • 第一步:把数据添加到数据模型:创建透视表时,勾选窗口底部的「添加此数据到数据模型」选项。
  • 第二步:新建两个度量值:点击「分析」选项卡(透视表工具)→「字段、项目和集」→「新建度量值」:
    1. 先创建最大报价金额的度量值(其实透视表自带的Max也能用,但统一用DAX更匹配后续的名称匹配):
      Largest Value = MAX('你的数据表名'[Quote Value])
      
    2. 再创建匹配报价名称的度量值:
      Largest Quote = 
      VAR MaxQuoteValue = [Largest Value]
      RETURN
      CALCULATE(
          VALUES('你的数据表名'[Quote Name]),
          '你的数据表名'[Quote Value] = MaxQuoteValue
      )
      
      要是你的数据里存在同客户同周期多个报价金额相同的最大值,这个度量值会返回逗号分隔的所有名称;如果你只想取第一个,把VALUES改成SELECTEDVALUE就行。
  • 第三步:在透视表中使用度量值:把「Largest Value」和「Largest Quote」这两个度量值拉到透视表的「值」区域,配合你的周期切片器,就能完美显示每个客户对应周期的最大报价和名称了。

备注:内容来源于stack exchange,提问作者James P

火山引擎 最新活动