Jump to content

Agrupar según numero de valores consecutivos


Recommended Posts

Posted

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 numeros consecutivos por encima de 19)

- Así, necesito que me agrupe el numero de sprints de cada duración: si vienen dos numeros 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!

Posted

A ver, prueba con esta macro. Los datos deben estar en la columna A, los resultados los da en la columna B.


Sub ContarSprints()

Dim Fila, Sprints
For x = 1 To Range("A" & Rows.Count).End(xlUp).Row
Do Until Range("A" & x) > Range("A" & x + 1) Or _
Range("A" & x) = ""
If Range("A" & x) > 18 Then Sprints = Sprints + 1
x = x + 1
Loop
Fila = Fila + 1
Range("B" & Fila) = Sprints + 1
Sprints = 0
Next

End Sub


[/CODE]

Posted

Veo que macro antonio ya se me adelanto en este tema....

Pero entonces creo que mal entendi los requerimientos de Alejandro Muñoz López

el dice que quiere obtener las series de datos agrupadas que comienzan en 19 y los siguientes numeros son consecutivos, dado el siguiente ejemplo?

[TABLE=width: 80]

[TR]

[TD=width: 80, align: right]19

[/TD]

[/TR]

[TR]

[TD=align: right]20

[/TD]

[/TR]

[TR]

[TD=align: right]21

[/TD]

[/TR]

[TR]

[TD=align: right]1

[/TD]

[/TR]

[TR]

[TD=align: right]19[/TD]

[/TR]

[TR]

[TD=align: right]2

[/TD]

[/TR]

[TR]

[TD=align: right]19[/TD]

[/TR]

[TR]

[TD=align: right]100

[/TD]

[/TR]

[TR]

[TD=align: right]19[/TD]

[/TR]

[TR]

[TD=align: right]100

[/TD]

[/TR]

[/TABLE]

quedaria asi el resultado que pide?

Sprint 3 = 1

Sprint 1 = 1

Sprint 2 = 2

O de plano si entendi mal! Parti de ese razonamiento para resolver su problema!

Saludos!

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy