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

如何修改Excel公式实现多列检索指定位置运动员并计算平均重量?

多位置匹配的运动员重量平均值计算方案

完全可行,以下是针对不同Excel版本的实现方法:

适用于Excel 365/2021的动态数组方案

如果你的Excel支持动态数组功能,用这个公式最简洁:

=AVERAGE(FILTER(INDEX(data,,MATCH(B5,Headers,)),BYROW(INDEX(data,,MATCH("position *",Headers,0)),LAMBDA(row,OR(row=B3)))))

公式说明:

  • INDEX(data,,MATCH("position *",Headers,0)):自动匹配所有以「position 」开头的列(比如position 1、position 2等),无需手动指定列数
  • BYROW(...,LAMBDA(row,OR(row=B3))):逐行检查当前运动员的所有位置列,只要有一列等于B3的位置值,就标记为符合条件
  • FILTER:筛选出符合条件的运动员对应的B5列(重量列)数据
  • AVERAGE:计算这些数据的平均值

兼容旧版Excel的SUMPRODUCT方案

如果用的是没有动态数组的旧版Excel,用这个公式:

=SUMPRODUCT((COUNTIF(INDEX(data,,MATCH("position *",Headers,0)),B3)>0)*INDEX(data,,MATCH(B5,Headers,)))/SUMPRODUCT(--(COUNTIF(INDEX(data,,MATCH("position *",Headers,0)),B3)>0))

公式说明:

  • COUNTIF(...):统计每一行中位置列等于B3的次数,只要次数大于0,就说明该运动员符合条件
  • 分子部分:把所有符合条件的运动员的重量值相加
  • 分母部分:统计符合条件的运动员总数
  • 两者相除得到平均值

已知具体位置列数的简化方案

如果你明确知道有多少个位置列(比如只有position 1和position 2),可以用数组公式直接扩展条件(旧版Excel需按Ctrl+Shift+Enter输入):

=AVERAGE(IF((INDEX(data,,MATCH("position 1",Headers,))=B3)+(INDEX(data,,MATCH("position 2",Headers,))=B3)>0,INDEX(data,,MATCH(B5,Headers,))))

公式说明:

  • (列1=B3)+(列2=B3)>0:表示只要列1或列2等于B3,就判定为符合条件
  • IF函数筛选出符合条件的重量值,最后用AVERAGE计算平均值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:40:22