Necesito un código para calcular un promedio como sigue:

La Macro:

Dará la nota final (nota media) en la celda correspondiente y dirá si ha sido aprobado o suspenso. Suspenso será cuando la nota final sea menor de 5 y, en este caso, el color de la fuente ha de ser rojo. En caso de que la nota final sea un aprobado, el texto ha de ser en azul.

Hay cuatro notas y las notas estarán en las celdas A2-B2-C2-D2

¿Me podrían por favor ayudar con el código?

Soy Novato en VBA y no entiendo muy bien tema programación.

Respuesta
2

Una forma sencilla de podría ser con esta macro, actualiza la celda donde pondrá el resultado

Sub Promedio()
Dim Prom As Integer
Prom = (Cells(2, 1).Value + Cells(2, 2).Value + Cells(2, 3).Value + Cells(2, 4).Value) / 4
    If Prom < 5 Then
        Range("F2").Value = Prom
        Range("F2").Font.Color = vbRed
    ElseIf Prom >= 5 Then
        Range("F2").Value = Prom
        Range("F2").Font.Color = vbBlue
    End If
End Sub

Muchas gracias por la ayuda !!

Solo me faltaría poner en la celda B6 según si el promedio es positivo es decir de 5 a 10 que ponga  aprobado y si no "suspenso"  también de colo azul y rojo.

Gracias otra vez de antemano por su ayuda!

Intente así

Sub Promedio()
Dim Prom As Integer
Prom = (Cells(2, 1).Value + Cells(2, 2).Value + Cells(2, 3).Value + Cells(2, 4).Value) / 4
    If Prom < 5 Then
        Range("B6").Value = "Aprobado"
        Range("B6").Font.Color = vbRed
    ElseIf Prom >= 5 Then
        Range("B6").Value = "Suspenso"
        Range("B6").Font.Color = vbBlue
    End If
End Sub

1 respuesta más de otro experto

Respuesta
2

Si lo necesitas para todas las filas empezando en la celda A2 y hasta la última celda con datos en la columna A, aquí una macro para considerar.

Sub PromedioCeldas()
  Dim i As Long
  For i = 2 To Range("A" & Rows.Count).End(3).Row
    With Range("E" & i)
      .Value = WorksheetFunction.Average(Range("A" & i & ":D" & i))
      If .Value > 5 Then .Font.ColorIndex = 5 Else .Font.ColorIndex = 3
    End With
  Next
End Sub

¡Gracias! 

¿No necesitas el valor del promedio?

Solamente el texto: ¿Aprobado o suspenso?

Entonces prueba así:

Sub PromedioCeldas()
  With Range("B6")
    If WorksheetFunction.Average(Range("A2:D2")) > 5 Then
      .Value = "aprobado"
      .Font.ColorIndex = 5
    Else
      .Value = "suspenso"
      .Font.ColorIndex = 3
    End If
  End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas