Como hacer un bucle con for para que recorra la columna C y determine el promedio

Lo que busco es que calcule el promedio de la columna C6 discriminando espacios en blanco y fórmulas, ejemplo:

Ventas                             3074     100%

Costo de ventas         -  2088     67.92%

Utilidad bruta =              986 no calcular promedio

Gadtos de operacion   100         3.25%

Gts arrendamiento       35          1.14%

Gts grales y admon      194        6.31%

Gts por depreciacion 239 7.77%

Total gst operacion 568 no calcular (hay formula)

Respuesta
1

Con el siguiente código puedes recorrer el rango que desees y va a discriminar las celdas en blanco, las celdas que no sean número y las celdas que tengan fórmulas.

En el siguiente ejemplo, el bucle empieza en la fila 6 y termina en la última fila con datos de la columna "C".

Sub CalcularPromedio()
  Dim prom As Double, tot As Double
  Dim n As Long
  Dim celda As Range
  '
  For Each celda In Range("C6", Range("C" & Rows.Count).End(3))
    If celda.Value <> "" Then
      If IsNumeric(celda.Value) Then
        If Not celda.HasFormula Then
          n = n + 1
          tot = tot + celda.Value
        End If
      End If
    End If
  Next
  '
  If n > 0 Then
    prom = tot / n
    MsgBox "Promedio = " & prom
  End If
End Sub

Gracias por el código. Si los datos inician en la columna E9 que le tengo que cambiar y el resultado quiero que me lo imprima en la columna F9 por cada dato individual, no me da el promedio por cada dato que tengo en la columna C o E.

Prueba el siguiente cambio.

Pero es mejor si pones una imagen con la estructura real de lo que tienes.

Sub CalcularPromedio()
  Dim prom As Double, tot As Double
  Dim n As Long
  Dim celda As Range
  '
  For Each celda In Range("E9", Range("E" & Rows.Count).End(3))
    If celda.Value <> "" Then
      If IsNumeric(celda.Value) Then
        If Not celda.HasFormula Then
          n = n + 1
          tot = tot + celda.Value
        End If
      End If
    End If
  Next
  '
  If n > 0 Then
    prom = tot / n
    range("F9").value = prom
  End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas