AVERAGEIFS 值不为 NA

AVERAGEIFS 值不为 NA

我有以下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

相关内容