Valores PROMEDIOIFS que no son NA

Valores PROMEDIOIFS que no son NA

Tengo lo siguiente AVERAGEIFSque promedia la columna I agrupada por los valores de la columna B

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

El problema es que, a veces, la columna B contiene un NA()error. ¿Cómo puedo filtrarlos fuera de la ecuación?

Intenté hacer un filtro

= AVERAGEIFS(ARRAYFORMULA(IF(ISNUMBER(B:B),B:B)), A:A,A:A)

pero esto me da un error.

Aquí hay algunos datos de muestra:

* A    *  B  *
| Fred |  8  |
| Bill |  9  |
| Jane |  NA |
| Jane |  9  |
| Fred |  NA |
| Bill |  5  |
| Fran |  9  |
| Fred |  4  |
| Jane |  1  |

Lo que quiero es agregar una columna C que muestre al lado de cada fila, el promedio de la persona sin contar los 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 |

En cuanto a los espacios en blanco, no me importa mucho lo que suceda allí; puede ser un error o un espacio en blanco, siempre que los NAs no afecten el promedio, no me importa.

Respuesta1

Opción 1 - IFNA() con Array

Realmente no entiendo qué AVERAGEIFSse supone que debes hacer, pero todo lo que necesitas hacer para solucionar este problema es usar IFNA()junto con una fórmula matricial ( Ctrl + Shift + Enteral ingresar la fórmula):

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

Esto convierte NA()los valores en espacios en blanco en los datos que estás manejando.


Opción 2: Limpia tus datos

Normalmente, esta sería mi opción 1, pero soy consciente de que no es lo que pediste, por lo que la he degradado a 2...

Obviamente, todo lo que hace la fórmula anterior es reemplazar NA()con valores en blanco. Alternativamente, ¿por qué no hacer que las celdas se calculen inicialmente como espacios en blanco? Esto también hará que tus columnas se vean mejor.

Cualquiera que sea el cálculo que tenga en sus celdas base, cambie la NA()opción para regresar ""o ajuste todo el cálculo enIFNA([insert calculation here],"")

Respuesta2

Una forma no tan inteligente será agregar una nueva columna oculta (por ejemplo, la columna D) con:

=SI(ESNÚMERO(B:B),B:B,0)

Entonces =AVERAGEIFS(D:D,A:A,A:A)funcionará según lo previsto:

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

información relacionada