web-dev-qa-db-ja.com

NAではないAVERAGEIFS値

次のAVERAGEIFSがあり、列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 |
_

空白部分については、そこで何が起こっているかはあまり気にしません。NAsが気にしない平均に影響を与えない限り、エラーまたは空白になる可能性があります。

2
George Mauer

オプション1-IFNA()with Array

AVERAGEIFSが実際に何をしているのかよくわかりませんが、これを修正するために必要なのは、IFNA()を配列数式(入力時にCtrl + Shift + Enter)と一緒に使用することだけです。式):

= AVERAGEIFS(IFNA(B:B,""), A:A, A:A)

これにより、処理しているデータのNA()値が空白になります。


オプション2-データをクリーンアップする

これは通常私のオプション1ですが、あなたが要求したものではないことを認識しているので、2に降格しました...

明らかに、上記の式はNA()を空白の値に置き換えるだけです。あるいは、最初にセルを空白として計算してみませんか?これにより、列の見栄えも良くなります。

ベースセルにある計算が何であれ、代わりに""を返すようにNA()オプションを変更するか、計算全体をIFNA([insert calculation here],"")でラップします。

1
Steve Taylor