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

求助:Excel中按attribute分组统计unique orders及按status拆分的方法

解决Excel中按属性组合统计唯一订单的问题

我来帮你搞定这个统计需求!先把你的原始数据和需求明确下来,再给你两种实用的解决方法:


原始数据

statusorderattribute
purchasedtablebrown
purchasedtableyellow
purchasedtable
purchasedsofa
purchasedsofagreen
purchasedsofa
purchasedpillowbrown
purchasedpillowyellow
purchasedpillow
shippedlamp
shippedlamp
shippedlamp
shippeddeskbrown
shippeddesk
shippeddesk

你的统计需求

需要针对每个order的attribute组合做分类统计,同时支持按status拆分:

  • 无attribute的唯一orders数量
  • 仅拥有brown属性、无其他属性的唯一orders数量
  • 同时拥有brown和yellow属性的唯一orders数量

预期结果你已经明确:

  1. 无attribute的唯一orders数量:1(lamp)
  2. 仅拥有brown属性的唯一orders数量:1(desk)
  3. 同时拥有brown和yellow属性的唯一orders数量:2(table和pillow)

方法1:Excel公式组合(适合小规模数据)

这个方法用Excel内置公式就能实现,适合数据量不大的情况:

步骤1:生成每个订单的唯一属性集合

在空白列(比如D列)的D2单元格输入以下公式,下拉填充到所有行:

=TEXTJOIN(",",TRUE,UNIQUE(FILTER($C$2:$C$16,($A$2:$A$16=A2)*($B$2:$B$16=B2)*($C$2:$C$16<>""))))

这个公式会为每个status+order组合提取所有非空的唯一属性,用逗号拼接成字符串。

步骤2:按需求统计各类订单

统计「无attribute的唯一orders」

=COUNTA(UNIQUE(FILTER($B$2:$B$16,($D$2:$D$16="")*(COUNTIFS($B$2:$B$16,$B$2:$B$16,$D$2:$D$16,"")>0))))

如果要按status拆分(比如只统计shipped状态),修改为:

=COUNTA(UNIQUE(FILTER($B$2:$B$16,($A$2:$A$16="shipped")*($D$2:$D$16="")*(COUNTIFS($B$2:$B$16,$B$2:$B$16,$A$2:$A$16,"shipped",$D$2:$D$16,"")>0))))

统计「仅拥有brown属性的唯一orders」

=COUNTA(UNIQUE(FILTER($B$2:$B$16,($D$2:$D$16="brown")*(COUNTIFS($B$2:$B$16,$B$2:$B$16,$D$2:$D$16,"brown")>0))))

统计「同时拥有brown和yellow属性的唯一orders」

=COUNTA(UNIQUE(FILTER($B$2:$B$16,(ISNUMBER(SEARCH("brown",$D$2:$D$16)))*(ISNUMBER(SEARCH("yellow",$D$2:$D$16)))*(COUNTIFS($B$2:$B$16,$B$2:$B$16,$D$2:$D$16,"*brown*yellow*")+COUNTIFS($B$2:$B$16,$B$2:$B$16,$D$2:$D$16,"*yellow*brown*")>0))))

方法2:Power Query(适合大规模数据,更灵活)

如果你的数据量比较大,或者需要频繁更新统计结果,Power Query是更高效的选择:

  1. 导入数据到Power Query:选中数据区域,点击「数据」选项卡 → 「从表格/区域」,确认数据包含表头,进入编辑器。
  2. 提取订单的唯一属性集合:
    • 点击「转换」选项卡 → 「分组依据」,设置分组字段为status和order,新列名设为UniqueAttributes,操作选择「所有行」。
    • 添加自定义列,公式为:=Text.Combine(List.Distinct([UniqueAttributes][attribute]), ","),这会把每个订单的唯一非空属性拼接成字符串。
  3. 标记订单的属性类别:
    • 添加自定义列,用条件判断标记类别:
      = if [UniqueAttributes] = "" then "无属性" 
        else if [UniqueAttributes] = "brown" then "仅brown"
        else if List.ContainsAll(Splitter.SplitTextByDelimiter(",")([UniqueAttributes]), {"brown", "yellow"}) then "brown+yellow"
        else "其他属性"
      
  4. 统计结果:再次按status和新添加的类别列分组,操作选择「计数行」,字段选择order,最后加载回Excel即可。

这个方法的好处是数据更新后,只需要点击「刷新」就能得到最新的统计结果,非常省心。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:36:46