Agrupar celdas según números consecutivos

Hola a todos:
Creo que para lo que necesito, necesito una macro.
Tengo una columna con cerca de 5000 filas, donde hay números del 0 al 25. Necesito que en otra parte de la hoja u otra hoja, me da igual, me agrupe (me cuente) los datos que son superiores a 19, y que además, me los agrupe de tal forma que:
- Cada valor de cada celda, es como si fuera "1 segundo", y cada valor por encima de 19 se denomina "sprint".
- Hay veces que los datos vienen así: 4, 5, 19, 4,10... Lo que significa que en ese rango hay 1 sprint de 1 segundo.
- Hay otras veces, que los datos vienen de tal forma que: 6, 7, 19, 20, 10....lo que sería 1 sprint de 2 segundos (puesto que hay 2 números consecutivos por encima de 19)
- Así, necesito que me agrupe el numero de sprints de cada duración: si vienen dos números consecutivos por encima de 19 sera 1 sprint de 2 segundos, y si vienen 7 valores por encima de 19 consecutivos, sería un sprint de 7 segundos.
Gracias!

1 Respuesta

Respuesta
1

No se si te entendido bien, a ver; entiendo que silos datos están así en la columna A, los datos que quieres en otro lado, en este ejemplo la columna B y C serían así:

Columna A Columna B Columna C

1 1 2 sprint de 1 seg

19 Sprint 3 seg. 1 sprint de 3 seg

¿19 Aquí que tendría que poner?

¿19 Aquí que tendría que poner?

2 2

19 Sprint 1 seg.

5 5

19 Sprint 1 seg.

2 2

...

¿Sería así?. ¿Puedes especificar un poco más?.

Más o menos! Sería tal que:

Columna A Columna B

1 2 sprints de 1 segundo

2 1 sprint de 2 segundos

6 1 sprint de 3 segundos

19

5

19

19

5

7

6

19

19

19

5

6

19

5

A ver si lo sacamos que me tiene desquiciado ya....gracias.

¿Puede haber celdas en blanco en la columna A?

Otra vez, otra cosa. ¿Cuánto es el máximo de valores = 19 que se pueden repetir? O ¿No hay máximo?

Hola! No hay celdas en blanco y no hay máximo de valores que se puedan repetir. Tampoco hay máximo de filas, lo mismo hay 1000 que 100000 filas. Gracias por tu colaboración!

Otra vez. Aquí tienes la macro. Te sirve para cualquier número de valores y cualquier valor de repetición. Escribe el resumen (resultado) en la columna E. Cambiala si quieres que lo ponga en otro sitio.

Un saludo.

Public Sub Calculo_sprints()
Dim sprints(50) As Integer
nFila = Range("A1000000").End(xlUp).Row
For t = 1 To nFila
sigui = 0
If Cells(t, 1) = 19 Then
sigui = 1
For a = nFila To t + 1 Step -1
If Cells(a, 1) = 19 Then
sigui = sigui + 1
Else
sigui = 1
End If
Next a
If sigui > 0 Then
sprints(sigui) = sprints(sigui) + 1
t = t + sigui
End If
End If
Next t
For t = 1 To 9
If sprints(t) > 0 Then Cells(t, 5) = sprints(t) & " " & "Sprints" & " de " & t & " segundos."
Next t
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas