Google Sheets中匹配数组并返回对应中位数的方法求助
Google Sheets 匹配数组值并返回对应列中位数的解决方案
可行公式
直接用BYROW搭配FILTER和MEDIAN实现逐行匹配并计算中位数,公式如下:
=BYROW(B5:B36518, LAMBDA(name, IF(name="", "", IFERROR(MEDIAN(FILTER(B_Sheet!D:D, B_Sheet!B:B=name)), ""))))
原公式失效原因
你之前用的MATCH函数只会返回每个姓名在B_Sheet!B:B中首次出现的行号,因此INDEX只能提取到单个匹配值,MEDIAN计算单个值的中位数就是它本身,根本没法汇总所有匹配的分数,自然得不到正确结果。
效果验证(结合你的示例)
Sheet1中输入公式后:
| 姓名 | 数组返回中位数 |
|---|---|
| James | 5 |
| Robert | 6 |
对应B_Sheet的数据:
| 姓名 | 测试分数 |
|---|---|
| James | 3 |
| Robert | 4 |
| James | 5 |
| Robert | 6 |
| James | 7 |
| Robert | 8 |
公式会自动筛选出每个姓名对应的所有测试分数,计算中位数后返回结果,完美解决VLOOKUP只能取首个匹配值的问题。
内容的提问来源于stack exchange,提问作者MMsmithH
相关产品推荐
相关产品推荐

