非 NA 的 AVERAGEIFS 值

非 NA 的 AVERAGEIFS 值

我有以下AVERAGEIFS平均值,按 B 列中的值分組 I 列

= 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 |

至於空白點,我不太關心那裡發生的事情 - 它可能是一個錯誤,也可能是空白,只要 sNA不影響平均值,我不在乎。

答案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 列):

=IF(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

相關內容