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

如何在Google Sheets中按品牌筛选出Top X高营收产品

按品牌提取营收Top5产品的解决方案

针对Google Sheets中无法用Query直接实现按品牌分组取TopN的问题,以下是几种实用解决方法:

方法1:RANK.EQ + FILTER 组合(直观易操作)

  1. 添加排名列:在空白列(比如E列)输入公式,计算每个产品在所属品牌内的营收排名:
    =RANK.EQ(C2, FILTER(C:C, D:D=D2), 0)
    
    (C2是当前行营收,D:D=D2限定同品牌范围,0表示降序排名),下拉填充至所有数据行。
  2. 筛选Top5:用FILTER提取排名≤5的产品,可同时按品牌和营收排序:
    =SORT(FILTER(A:D, E:E<=5), 4, FALSE, 3, FALSE)
    
    (4是品牌列序号,3是营收列序号,FALSE表示降序)

方法2:动态数组公式(新版Sheets推荐,无需额外列)

直接用LET+BYROW组合实现一次性输出结果,无需手动添加辅助列:

=LET(
  品牌列表, UNIQUE(D:D),
  品牌排序数据, BYROW(品牌列表, LAMBDA(当前品牌, SORT(FILTER(A:D, D:D=当前品牌), 3, FALSE))),
  截取Top5, BYROW(品牌排序数据, LAMBDA(品牌数据, INDEX(品牌数据, SEQUENCE(MIN(5, ROWS(品牌数据))), SEQUENCE(COLUMNS(品牌数据))))),
  VSTACK(A1:D1, FLATTEN(截取Top5))
)
  • UNIQUE(D:D)获取所有不重复的品牌
  • BYROW遍历每个品牌,筛选并按营收降序排序该品牌的所有产品
  • 自动截取每个品牌的前5条数据(产品不足5条时取全部)
  • 最后合并表头和结果,输出规整的表格

方法3:Query + 数组辅助(兼容旧版Sheets)

通过构建包含排名的临时数组,再用Query筛选:

=QUERY(
  {A:D, ARRAYFORMULA(IF(D:D="",, RANK.EQ(C:C, IF(D:D=D:D, C:C), 0)))},
  "select Col1,Col2,Col3,Col4 where Col5<=5 order by Col4 desc, Col3 desc",
  1
)
  • {A:D, ...}将排名列拼接至原数据,Col5是新增的排名列
  • Query语句筛选排名≤5的行,并按品牌、营收降序排列

注意事项

  • 确保品牌列的Regexmatch提取结果无空值或错误值,否则会导致分组异常
  • 替换公式中的列号(如C、D列)和数据范围,匹配你的实际表格结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:10:24