如何在Google Sheets中计算序列化与非序列化数值的最高值
Google Sheets 序列化与非序列化混合数值最高值计算方案
默认适配数据结构:A列存储属性名称,B列存储对应数值,数据范围为A2:B7,可根据实际数据规模调整公式中的范围参数。
方案1:单单元格直接输出最终结果(优先推荐)
直接输入下方公式即可得到最终最高值:
=MAX( BYROW(UNIQUE(FILTER(A2:A,LEFT(A2:A,6)="Normal")),LAMBDA(x,VLOOKUP(x,A2:B,2,0))), BYROW(UNIQUE(FILTER(A2:A,REGEXMATCH(A2:A,"Serial"))),LAMBDA(x,SUMIF(A2:A,x,B2:B))) )
公式逻辑说明:
- 第一部分提取所有名称前缀为
Normal的普通数值,直接取原值参与最大值计算 - 第二部分提取所有名称包含
Serial的序列化数值,按名称分组求和后参与最大值计算 - 最终返回两类数值的最大值,你的示例下输出结果为
60
注:使用
REGEXMATCH匹配Serial可兼容你示例中Serialied1的拼写误差,若名称格式统一可替换为前缀匹配提升性能。
方案2:多单元格分步计算(便于核对中间结果)
步骤1:计算所有序列化项汇总值
空白单元格输入公式,自动输出所有序列化项名称与对应总和:=QUERY(A2:B,"SELECT A,SUM(B) WHERE A CONTAINS 'Serial' GROUP BY A LABEL SUM(B) '序列化汇总值'",0)
示例输出:
- Serialied1: 30
- Serialized1: 10
- Serialized2: 10
若需要合并拼写近似的同类项,可在QUERY中增加正则替换逻辑统一名称格式。
步骤2:计算普通值最高值
空白单元格输入公式,示例输出结果为60:=MAX(FILTER(B2:B,LEFT(A2:A,6)="Normal"))
步骤3:计算序列化最高值
空白单元格输入公式,示例输出结果为40:=MAX(BYROW(UNIQUE(FILTER(A2:A,REGEXMATCH(A2:A,"Serial"))),LAMBDA(x,SUMIF(A2:A,x,B2:B))))
步骤4:输出最终结果
空白单元格输入公式,取上述两类最高值的最大值即可:=MAX(步骤2结果单元格,步骤3结果单元格)
结果验证
完全匹配你的预期输出:
- 序列化项汇总:Serialized1合计40、Serialized2合计10
- 普通值最高:60
- 序列化最高:40
- 最终最高值:60
内容的提问来源于stack exchange,提问作者Quinnell
相关产品推荐
相关产品推荐

