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

Google Sheets筛选唯一行并保留最高展示量数据的公式求助

解决Google Sheets提取每个Post ID对应最高Impressions行的问题

我明白你现在遇到的困扰——用MMULT搭配FILTER的公式没法完整提取每个Post ID对应最高曝光量的行,这种数组公式有时候会因为数据量、重复最大值或者匹配逻辑的问题出现漏项。下面给你几个更可靠的解决方案,都是Google Sheets里能直接落地的:

方法1:QUERY+FILTER组合(兼容性强,适合大多数版本)

这个方法先通过QUERY分组得到每个Post ID的最高Impressions,再用这个结果匹配原表的完整行,逻辑清晰不容易出错:

=FILTER(
  'Intermediate Data'!A2:L,
  ARRAYFORMULA('Intermediate Data'!F2:F & "|" & 'Intermediate Data'!G2:G) 
  IN 
  ARRAYFORMULA(QUERY('Intermediate Data'!F2:G, "SELECT F&'|'&MAX(G) WHERE F IS NOT NULL GROUP BY F"))
)

原理说明:

  1. 用QUERY分组计算每个Post ID(F列)对应的最大Impressions(G列),并把两者拼接成PostID|MaxImpression的格式
  2. 把原表的每一行也拼接成同样的格式,用FILTER筛选出在QUERY结果里的行,这样就能得到每个Post ID对应最高Impressions的完整数据

方法2:BYROW+XLOOKUP(逐行处理,逻辑直观)

如果你的Google Sheets支持LAMBDA函数(现在大部分都支持),可以用这个逐行处理每个唯一Post ID的方案:

  1. 先在新表的A列提取所有唯一Post ID:
=UNIQUE('Intermediate Data'!F2:F)
  1. 在B列(或你需要的起始列)输入以下公式,下拉(或直接溢出)得到完整行数据:
=BYROW(A2:A, LAMBDA(post_id, 
  XLOOKUP(
    1, 
    ('Intermediate Data'!F2:F=post_id)*('Intermediate Data'!G2:G=MAX(FILTER('Intermediate Data'!G2:G, 'Intermediate Data'!F2:F=post_id))), 
    'Intermediate Data'!A2:L
  )
))

原理说明:

  • BYROW遍历每个唯一Post ID
  • 对每个Post ID,先找到它对应的最大Impressions值
  • 用XLOOKUP定位到原表中同时匹配Post ID和最大Impressions的行,返回整行数据

方法3:GROUPBY新函数(最简洁,需新版Google Sheets)

如果你的Google Sheets已经更新了2023年后推出的GROUPBY函数,这是最简洁的方案:

=GROUPBY(
  'Intermediate Data'!F2:F, 
  'Intermediate Data'!A2:L, 
  LAMBDA(row_group, 
    INDEX(row_group, MATCH(MAX(INDEX(row_group,,7)), INDEX(row_group,,7), 0))
  ), 
  1
)

原理说明:

  • GROUPBY按Post ID(F列)分组
  • 对每个分组(即同一个Post ID的所有行),用LAMBDA函数找到G列(第7列,从A开始数)最大值对应的行,返回整行数据

关于你原有公式的问题

你用的MMULT+FILTER方案,本质是通过矩阵乘法比较每一行和其他所有行的Impressions大小,但当数据量较大、存在多个相同最大值的行,或者Post ID为空时,容易出现计算逻辑遗漏或内存溢出的问题,导致部分Post ID没被提取到。上面的方案都避开了这个复杂的矩阵计算,逻辑更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:51:49