Promedio de 2 columnas por genero

Soy bastante nuevo en esto y busco su ayuda de manera urgente. Tengo un programa en VBA que toma los datos y los guarda en una planilla excel con la opción de editar o eliminar estos datos. Lo único que me falta es calcular el promedio de estatura y de peso de todas las personas ingresadas diferenciados por genero (hombre o mujer) y que aparezcan en las etiquetas del programa (no en un MsgBox).

Les dejo el link del archivo para que lo vean.

Promedio de 2 columnas por genero

Lo otro, en el código verán que el promedio general (sin diferenciar por genero) esta dividido por 4 ya que estaba probando el resto del código, la pregunta es ¿Qué pongo en vez de ese 4 para que divida por la cantidad de gente ingresada?

1 Respuesta

Respuesta
1

Como es tu primer consulta te resuelvo los 2 temas, pero en próximas consultas debes dejar cada problema en consulta aparte indicando en el título el tema que se resolverá.

Bien, la del promedio por género:

Private Sub prom_sexo_Click()
'x Elsamatilde
'se repite el bucle hasta el total de registros según col A
'obtener la cantidad de registros
canti = Application.WorksheetFunction.CountA(Range("A:A"))
For i = 2 To canti
'se acumulan según sexo las 2 variables: estatura y peso
If Range("C" & i) = "masculino" Then
    estaM = estaM + Range("E" & i)
    pesoM = pesoM + Range("F" & i)
    sumM = sumM + 1
Else
    estaF = estaF + Range("E" & i)
    pesoF = pesoF + Range("F" & i)
    sumF = sumF + 1
End If
Next i
est_hombres.Caption = Round(estaM / sumM, 2)
est_mujeres.Caption = Round(estaF / sumF, 2)
peso_hombres.Caption = Round(pesoM / sumM, 2)
peso_mujeres.Caption = Round(pesoF / sumF, 2)
End Sub

Observa que no dejo de modo fijo el fin del bucle en 5 para permitirte agregar más registros.

Este modelo, de calcular las 2 variables en el mismo bucle también te puede servir para el otro cálculo. Por ahora solo te agregué lo que necesitas para evitar el nro 4:

Private Sub proms_Click()
'ajustada x Elsamatilde
Range("E2").Select
Sum = Range("E2")
For i = 2 To 5
ActiveCell.Offset(1, 0).Select
Sum = Sum + ActiveCell.Value
Next i
'obtener la cantidad de registros-se descuenta la fila de títulos
canti = Application.WorksheetFunction.CountA(Range("A:A")) - 1
est_todos.Caption = Round(Sum / canti, 2)
Range("F2").Select
Sum = Range("F2")
For i = 2 To 5
ActiveCell.Offset(1, 0).Select
Sum = Sum + ActiveCell.Value
Next i
peso_todos.Caption = Round(Sum / canti, 2)
End Sub

La función ROUND redondea la cantidad de decimales, que por ahora quedó en 2.

PD) algunos de tus valores están como texto y así no te darán resultados correctos... si necesitas el método para convertirlos a numeros deja una nueva consulta (podes indicar que es para Elsa en el cuerpo del mensaje)

Muchas gracias por tu respuesta Elsa Matilde, en verdad me  iluminaste! Te cuento que he probado el código y siguiendo tus recomendaciones como cambiar el fin del bucle a "canti" para poder agregar más registros todo me anda ok, excepto por este pequeño detalle que tal como dijiste es porque los valores están almacenados como texto. Crearé la nueva consulta para que me ayudes con el código (ya que yo me enredo montones).

Deja en el cuerpo del mensaje indicado que es 'Para Elsa' así te respondo siguiendo la muestra de tu libro que ya lo tengo.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas