Excel技术问询:基于两组账户数据批量计算统计值
用Excel公式快速生成账户数值的汇总统计
嘿,这个需求挺常见的,给你几个纯公式的解决方案,几千条数据完全hold住,不用搞复杂的VBA或者手动统计:
1. 最直接的条件函数法(Excel 2019/365适用)
这是我最推荐的方式,用AVERAGEIF、MINIFS、MAXIFS三个函数就能搞定,操作超简单:
先明确你的数据结构(假设):
- Set2里,A列是账户名,B列是对应的数值明细,范围比如是
$A$2:$A$10000(几千条数据的实际范围) - Set1里,A列是要统计的账户列表
那在Set1的B2单元格(用来放平均值)输入:
=AVERAGEIF($A$2:$A$10000, A2, $B$2:$B$10000)
在Set1的C2单元格(最小值)输入:
=MINIFS($B$2:$B$10000, $A$2:$A$10000, A2)
在Set1的D2单元格(最大值)输入:
=MAXIFS($B$2:$B$10000, $A$2:$A$10000, A2)
输完直接下拉填充公式就行!记得用绝对引用(加$),这样下拉的时候Set2的范围不会乱跑,要是你数据范围不是10000行,改成你实际的行数就行。
2. 兼容旧版Excel的方案(2016及以前)
要是你用的是旧版Excel,不支持MINIFS和MAXIFS,那就换AGGREGATE函数,它能忽略错误值,完美替代:
最小值公式(C2):
=AGGREGATE(15, 6, $B$2:$B$10000/($A$2:$A$10000=A2), 1)
最大值公式(D2):
=AGGREGATE(14, 6, $B$2:$B$10000/($A$2:$A$10000=A2), 1)
平均值还是用AVERAGEIF就行,这个函数旧版也支持。
3. 懒人专属:一键生成完整汇总(Excel 365专属)
如果你用的是Excel 365,那更省事!直接用动态数组函数,连Set1都不用提前准备,从Set2里自动提取唯一账户并计算所有统计值:
在空白单元格输入这个公式(假设Set2的账户和数值在A:B列):
=LET( accounts, UNIQUE(A2:A10000), stats, BYROW(accounts, LAMBDA(x, HSTACK(x, AVERAGEIF(A:A, x, B:B), MINIFS(B:B, A:A, x), MAXIFS(B:B, A:A, x)))), VSTACK({"账户", "平均值", "最小值", "最大值"}, stats) )
按下回车直接生成带表头的完整汇总表,连下拉都省了,简直是懒人福音。
小提醒:如果数据量特别大,先把Set2的数据按账户排个序,公式计算速度会更快;要是你偶尔也想用非公式方法,数据透视表拖几下也能出结果,但你要的是公式化方案,上面的方法就完全够用啦。
内容的提问来源于stack exchange,提问作者Codesight
相关产品推荐
相关产品推荐

