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

如何用Excel公式按产品提取溢出数组中每个类别的前1条数据?

按类别提取溢出数组中每组第一条数据的Excel公式方案

问题分析

你通过GROUPBY生成的溢出数组(H66#)中,每个Product对应多行数据,需要提取每组的第一条记录。之前使用的BYROW+UNIQUE+FILTER+TAKE公式出错,核心原因是BYROW对输出维度的要求严格,当FILTER返回的数组结构不匹配时会触发错误。

推荐解决方案:直接在原GROUPBY中实现

既然你是通过GROUPBY生成的汇总数据,无需额外处理溢出数组,直接修改原公式即可一步到位获取每个Product的第一条完整数据:

=GROUPBY(
    SL_2025[Product],
    HSTACK(SL_2025[Product],SL_2025[Description],SL_2025[Root Cause],SL_2025[Total Adjusted Shortage]),
    LAMBDA(x, TAKE(x, 1)),
    0, 0, -4,
    COUNTIF(Filters!C2#, SL_2025[Sales Office])*COUNTIF(Filters!G2#, SL_2025[Fiscal Week])
)
  • 关键调整:
    • 将原SUM聚合函数替换为自定义LAMBDA,用TAKE(x,1)直接提取每组的第一条完整记录
    • 分组键仅保留SL_2025[Product],确保严格按产品分组

备选方案:基于已生成的溢出数组H66#处理

如果必须基于已有的H66#溢出数组操作,用MAP替代BYROW适配维度,同时优化空值处理:

=MAP(UNIQUE(CHOOSECOLS(H66#, 1)), LAMBDA(prod,
    TAKE(FILTER(H66#, CHOOSECOLS(H66#, 1)=prod, ""), 1)
))
  • 替换BYROW为MAP:MAP会自动适配每个唯一产品的输出结构,避免维度不兼容错误
  • 将FILTER的默认占位值从0改为空字符串"",避免无匹配时出现无效数值

兼容旧版Excel的方案(无LAMBDA函数支持)

如果你的Excel版本不支持LAMBDA系列函数,可使用INDEX+XMATCH组合实现:

=INDEX(H66#, XMATCH(UNIQUE(CHOOSECOLS(H66#, 1)), CHOOSECOLS(H66#, 1), 0), SEQUENCE(COLUMNS(H66#)))
  • 原理:通过XMATCH定位每个唯一Product首次出现的行号,再用INDEX提取该行的所有列数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:22:11