Solución 1

Solución 1

Tengo una fila de valores y quiero encontrar el promedio de los 3 primeros, sin contar las celdas en blanco. Ejemplo:

  ABCDEFG
 12 en blanco 8 en blanco 7 9 4

El promedio de las primeras 3 celdas que no están en blanco debería ser 9, pero no puedo encontrar una fórmula que lo calcule por mí. Alguien puede ayudar ?

Respuesta1

EnA2ingresar:

=IF(A1="",0,1)

y enB2ingresar:

=IF(OR(B1="",SUM($A$2:A2)=3),0,1)

y copiar. Luego en otra celda ingresa:

=SUMPRODUCT((1:1)*(2:2))/3

ingrese la descripción de la imagen aquí

Respuesta2

Estas buscando elPROMEDIOfunción. Según la fórmulasintaxis y usopara la función PROMEDIO de Excel:

Si un argumento de referencia de rango o celda contiene texto, valores lógicos,o celdas vacías, esos valores se ignoran; sin embargo, se incluyen las celdas con el valor cero.

La fórmula =AVERAGE(A1:E1)devuelve 9:

ingrese la descripción de la imagen aquí

Respuesta3

Solución 1

Fuerza bruta: el promedio que desea se puede calcular mediante:

=SI(CONTAR($A1:$C1)=3, PROMEDIO($A1:$C1),
 SI(CONTAR($A1:$D1)=3, PROMEDIO($A1:$D1),
 SI(CONTAR($A1:$E1)=3, PROMEDIO($A1:$E1),
 SI(CONTAR($A1:$F1)=3, PROMEDIO($A1:$F1),
 SI(CONTAR($A1:$G1)=3, PROMEDIO($A1:$G1), "ups")))))

(Versión de una sola línea:)
 =SI(COUNT($A1:$C1)=3, PROMEDIO($A1:$C1), IF(COUNT($A1:$D1)=3, PROMEDIO($A1:$D1 ), SI(CONTAR($A1:$E1)=3, PROMEDIO($A1:$E1), SI(CONTAR($A1:$F1)=3, PROMEDIO($A1:$F1), SI(CONTAR( $A1:$G1)=3, PROMEDIO($A1:$G1),"ups")))))

que busca el subconjunto inicial más corto de la fila que contiene tres números y lo promedia. Esto no solo resulta incómodo para una gran cantidad de columnas, sino que también puede fallar con bastante rapidez, ya que (creo) IF()tiene un límite de anidamiento bastante bajo.

Solución 1.9

Finura.

Llamo a esto "1.9" porque aún no está terminado. La expresion

SMALL(IF(ISNUMBER($A1:$G1),COLUMN($A1:$G1),""), {1,2,3})

(usado en una fórmula matricial) encuentra los números de columna de los primeros tres números en la fila 1. El

IF(ISNUMBER($A1:$G1),COLUMN($A1:$G1),"")

parte evalúa a

IF( {TRUE,FALSE,TRUE,FALSE,TRUE,TRUE,TRUE}, {1,2,3,4,5,6,7}, "" )

lo que se reduce a

{ 1, "", 3, "", 5, 6, 7 }

y SMALL(…, {1,2,3})de lo anterior produce { 1, 3, 5 }. Debería ser una simple cuestión de decir

=AVERAGE(INDEX($A7:$G7, 1, SMALL(IF(ISNUMBER($A7:$G7),COLUMN($A7:$G7),""),{1,2,3})))

o

=AVERAGE(OFFSET($A7:$G7, 1, SMALL(IF(ISNUMBER($A7:$G7),COLUMN($A7:$G7),""),{1,2,3})))

pero devuelven el valor de A1(12) o un error ( #DIV/0!o #REF!). No puedo entender cómo terminar esto.

información relacionada