Hola a todos,
estoy empezando a trabajar con una macro que he heredado en mi trabajo,
lo que hace es calcular la media, número de medidas de un rango, la
desviación y el CV%, en función de la fecha y da los resultados por
día. Esta macro se ejecuta todos los lunes con lo que ordena los datos
debejo de su columna por fecha de lunes a viernes.
El código funciona correctamente pero necesitaría que recalculara los
parámetros en caso de que se eliminase algún dato el rango es
variable pero nunca tiene más de 3500 valores.
En la columna "A" estan las fechas y en la "C" los datos para calcular.
Gracias
Cells(2, 4).Value = "Fecha"
Cells(3, 4).Value = "Media"
Cells(4, 4).Value = "Numero Medidas"
Cells(5, 4).Value = "Desviacion"
Cells(6, 4).Value = "CV"
Cells(1, 5).Value = "Lunes"
Cells(1, 6).Value = "Martes"
Cells(1, 7).Value = "Miercoles"
Cells(1, 8).Value = "Jueves"
Cells(1, 9).Value = "Viernes"
Cells(1, 10).Value = "Sabado"
Cells(1, 11).Value = "Domingo"
Range("e5:k6").Select
Selection.NumberFormat = "0.00"
Range("e4:k4").Select
Selection.NumberFormat = "0"
Range("e3:k3").Select
Selection.NumberFormat = "0.0"
Range("e2:k2").Select
Dim sum, Med, Des, cuent
sum = 0
Med = 0
Des = 0
x = 5
For i = 1 To 3500
Cells(i, 1).Select
A = ActiveCell.Value
For n = i + 1 To 3500
Cells(n, 1).Select
b = ActiveCell.Value
If b <> A Then
Range(Cells(i, 3), Cells(n - 1, 3)).Select
Set rng = Selection
sum = WorksheetFunction.sum(rng)
Med = WorksheetFunction.Average(rng)
Des = WorksheetFunction.StDev(rng)
cuent = WorksheetFunction.Count(rng)
Cells(2, x).Value = A
'Cells(3, x).Value = sum
Cells(3, x).Value = Med
Cells(4, x).Value = cuent
Cells(5, x).Value = Des
Cells(6, x).Value = Des * 100 / Med
x = x + 1
i = n - 1
GoTo Salta
Else
End If
'End If
Next n
Salta:
If b = "" Then
GoTo fin:
End If
Next i
fin:
Leer las respuestas