
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 |
私が望むのは、各行の横に、NA を除いた個人の平均を表示する列 C を追加することです。
* 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 など) を追加することです。
=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