Excel复杂公式求助:按User ID+Objective统计平均Time
按User ID+Objective统计平均任务时长的Excel解决方案
嘿,这个需求我太熟了!处理大型Excel数据的多维度平均值统计,其实有两个非常实用的方向,根据你的数据规模和Excel版本来选就行:
一、用AVERAGEIFS函数(适合中小数据量/快速公式实现)
如果你的Excel是365/2021及以上版本,步骤超简单:
- 提取唯一的User ID+Objective组合:在空白单元格(比如E2)输入公式
=UNIQUE(A2:B[数据最后一行行号]),回车后会自动生成所有不重复的用户-目标配对,不用手动整理。- 要是用的是旧版Excel(没有UNIQUE函数),可以用「数据」选项卡的「高级筛选」,勾选“将筛选结果复制到其他位置”,列表区域选A:B,条件区域留空,勾选“选择不重复的记录”,复制到空白区域就能得到唯一组合。
- 计算对应平均时长:在G2单元格输入公式
=AVERAGEIFS(C:C, A:A, E2, B:B, F2)(这里假设C列是time数据,E列是User ID,F列是objectives),下拉填充就能得到每个组合的平均耗时。
公式解释:AVERAGEIFS 是多条件平均值函数,第一个参数是要求平均的数值范围(C列的time),后面成对出现「条件范围+条件」,也就是匹配A列等于E2的User ID,同时B列等于F2的objective,然后计算符合条件的time的平均值。
二、用Power Query(适合大型数据,高效不卡顿)
如果你的数据量特别大(比如几万行以上),函数公式可能会卡顿,这时候Power Query是最优解,而且生成的结果是动态的,数据更新后刷新一下就行:
- 选中你的数据区域(包括表头),点击「数据」选项卡 → 「从表格/区域」(如果提示“表包含标题”就勾选,然后确定)。
- 进入Power Query编辑器后,按住Ctrl选中「User ID」和「objectives」两列,点击「转换」选项卡 → 「分组依据」。
- 在弹出的分组窗口里选择「高级」,点击「添加分组」,确保两个分组列分别是「User ID」和「objectives」;然后点击「添加聚合」,新列名填「平均时长」,操作选「平均值」,列选「time」,然后确定。
- 点击「关闭并上载」,就能在新工作表得到整理好的User ID、objective、平均时长的结果了。
注意事项
- 确保你的time列是数值格式,如果是文本格式的话,AVERAGEIFS会返回错误,先把格式改成数值再统计。
- 如果数据里有异常值(比如特别长的耗时),可以考虑用
TRIMMEAN结合条件逻辑来剔除极端值,比如用嵌套公式实现类似多条件的截尾平均。
内容的提问来源于stack exchange,提问作者FullStack
相关产品推荐
相关产品推荐

