我有以下AVERAGEIFS
平均值,即第 I 列按 B 列中的值分组
= AVERAGEIFS(B:B, A:A, A:A)
问题是,B 列有时会包含错误NA()
。我该如何从等式中过滤掉这些错误?
我尝试做一个过滤器
= AVERAGEIFS(ARRAYFORMULA(IF(ISNUMBER(B:B),B:B)), A:A,A:A)
但这给了我一个错误。
以下是一些示例数据:
* A * B *
| Fred | 8 |
| Bill | 9 |
| Jane | NA |
| Jane | 9 |
| Fred | NA |
| Bill | 5 |
| Fran | 9 |
| Fred | 4 |
| Jane | 1 |
我想要的是添加一个 C 列,显示在每一行旁边,该列显示的是个人的平均值(不计算 NA)。
* A * B * C *
| Fred | 8 | 6 |
| Bill | 9 | 7 |
| Jane | NA | |
| Jane | 9 | 5 |
| Fred | NA | |
| Bill | 5 | 7 |
| Fran | 9 | 9 |
| Fred | 4 | 6 |
| Jane | 1 | 5 |
至于空白点,我不太关心那里发生了什么 - 它可能是错误,也可能是空白,只要NA
不影响平均值我就不在乎。
答案1
选项 1 - 带数组的 IFNA()
我不太明白你AVERAGEIFS
实际上应该做什么,但要解决这个问题,你需要做的就是使用IFNA()
数组公式(Ctrl + Shift + Enter
输入公式时):
= AVERAGEIFS(IFNA(B:B,""), A:A, A:A)
这会将NA()
您正在处理的数据中的值变成空白。
选项 2 - 清理数据
这通常是我的选择 1,但我知道这不是您所要求的,因此我将其降级为 2...
显然,上述公式所做的只是NA()
用空白值替换。或者,为什么不一开始就让单元格计算为空白呢?这也会使您的列看起来更美观。
无论您在基础单元格中进行什么计算,都可以更改NA()
返回选项""
,或者将整个计算包装在IFNA([insert calculation here],"")
答案2
一种不太聪明的方法是添加一个新的隐藏列(比如说 D 列),内容如下:
=如果(ISNUMBER(B:B),B:B,0)
然后你的=AVERAGEIFS(D:D,A:A,A:A)
意志就会按预期进行:
Fred 8 4
Bill 9 7
Jane NA 3.333333333
Jane 9 3.333333333
Fred NA 4
Bill 5 7
Fran 9 9
Fred 4 4
Jane 1 3.333333333