Error al trabajar con la Propiedad Average

Es una consulta mínima pero no contemplada en su momento.

Quiero calcular el promedio entre 2 valores en 2 celdas de una misma columna que corresponden al mismo CodigoM 296050 pero resulta que solo hay un valor, por lo que el Promedio daría error.

¿Qué modificarías o que salvedad agregarías en este pedazo de macro como para que contemple esta posibilidad?

Case "296050"
lÚltimaFila = Worksheets("Historico").[AP2].End(xlDown).Row
ComboBox4.AddItem Hoja3.Range("L2").Value
ComboBox4.AddItem Format((Evaluate("=AVERAGE(IF('Historico'!F2:F" & lÚltimaFila & "=" & CStr(CodigoM.Value) & ",'Historico'!AP2:AP" & lÚltimaFila & "))")), "0.000") 'PROMEDIO
ComboBox4.AddItem Format((Evaluate("=MAX(IF('Historico'!F2:F" & lÚltimaFila & "=" & CStr(CodigoM.Value) & ",'Historico'!AP2:AP" & lÚltimaFila & "))")), "0.000") 'REAL
Label12.Caption = "hh/m2"

1 Respuesta

Respuesta
1

 H o l a:

Me puedes enviar el archivo y me lo explicas con ejemplos.

Recuerda poner tu nombre de usuario en el asunto.

Si Dante

Va por correo

Abrazo y muchas gracias

H o l  a:

En tu fórmula estás buscando en la columna "F" de la hoja "Historico Montaje", pero en esta hoja en la columna "F" no tienes los códigos, los códigos están en la hoja "Historico"

ComboBox4. AddItem Format((Evaluate("=AVERAGE(IF('Historico Montaje'!F2:F" 

Debería ser así:

 Case "298730"
      lÚltimaFila = Worksheets("Historico").[AP2].End(xlDown).Row
       ComboBox4.AddItem Hoja3.Range("L10").Value
       ComboBox4.AddItem Format((Evaluate("=AVERAGE(IF('Historico'!F2:F" & lÚltimaFila & "=" & CStr(CodigoM.Value) & ",'Historico'!AP2:AP" & lÚltimaFila & "))")), "0.000") 'PROMEDIO
       ComboBox4.AddItem Format((Evaluate("=MAX(IF('Historico'!F2:F" & lÚltimaFila & "=" & CStr(CodigoM.Value) & ",'Historico'!AP2:AP" & lÚltimaFila & "))")), "0.000") 'REAL
       Label12.Caption = "hh/ml"
 End Select

S a l u d o s

Tenes razón. Fue un error mio pero solo porque estas filas estaban comentadas y las active para tu consulta. Ahora bien, aun cambiando la hoja, salta el error y es porque debería anticipar un if si la cantidad de datos para promediar es mayor o igual a 2, no te parece?

Intenté hacer la prueba con un registro y el promedio funciona bien, solamente envía error cuando no hay registros.

O envíame un caso de un solo registro

Lo que hace el promedio es sumar los valores y dividir entre el número total de valores, entonces, si no hay valores lo que hace es dividir 0 / 0 (cero entre cero) y eso es un error: #¡DIV/0! .

Lo que puedes hacer es poner On Error Resume Next al principio de la macro y al final de la macro On Error Goto 0

o poner tu fórmula con SI.ERROR:

ComboBox4.AddItem Format(Evaluate("=IFERROR(AVERAGE(IF('Historico'!F2:F" & lÚltimaFila & "=" & CStr(CodigoM.Value) & ",'Historico'!AP2:AP" & lÚltimaFila & ")),0)"), "0.000") 'PROMEDIO

s a l u d o s

Dante

La probé, el Promedio queda en cero pero la siguiente fila, la de MÁXIMO, también toma el valor del AVERAGE (esto es debido a que esta inmediatamente abajo)

¿La primera solución seria invertir las filas pero ... y no habría otra posibilidad más que invertir el orden?

Abrazo

Pues si invirtiendo el orden te funciona, así hazlo.

¡Gracias Dante!

no era la idea pues en todas las ayudas tengo comentado el orden en el que aparecen en cada combo....pero lo cambiare!

abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas