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