Contar celdas según valores

Hola
Tengo una hoja de Excel en la que registro lo que hago en el gimnasio. La estructura es algo así:
A1: Fecha
B1: Ejercicio (por ejemplo: press banca, bíceps con mancuerna...)
C1: Kilogramos usados en la primera serie
D1: Repeticiones en la primera serie
E1: Kilogramos usados en la segunda serie
F1: Repeticiones usadas en la segunda serie
Y así seguimos con una estructura de kg-rep-kg-rep-kg-rep...
La he usado durante un año, por lo que tengo muchos registros realizados, pero ahora quiero mejorarla. Me he decidido por una estructura algo diferente, en la que quiero registrar:
Kilogramos por Repeticiones por Series
Es decir, que si hago varias veces lo mismo, lo simplifique. Por ejemplo:
100 Kg.  5 Rep.  100 Kg.  5 Rep.   100 Kg.  5 Rep.  105 Kg.  3 Rep. 
Sea igual a: 
100 Kg.  5 Rep.  3 Series    105 Kg.  3 Rep.  1 Serie 
El problema radica en que la tabla es muy heterogénea. A veces sólo hay una o dos series, a veces hay 12 diferentes, a veces hay 3 iguales, 2 distintas, 5 iguales...
No quiero que salga como texto todo seguido, sino convertir la información actual a algo de la forma:
A1: Fecha
B1: Ejercicio (por ejemplo: press banca, bíceps con mancuerna...)
C1: Kilogramos usados en el primer grupo de series
D1: Repeticiones en el primer grupo de series
E1: Número de series con los mismos Kg. Y repeticiones
F1: Repeticiones usadas en el segundo grupo de series
G1: Repeticiones en el segundo grupo de series
H1: Número de series con los mismos Kg. Y repeticiones
Y así seguimos con una estructura de kg-rep-series-kg-rep-series...
Gracias

1 respuesta

Respuesta
1
Bueno la verdad no entiendo muy bien lo que debo hacer puesto que, no conozco sobre los términos que se manejan en los gimnasios, le sugiero que me envíe un modelo del archivo que tiene al correo [email protected] bien descrito de lo que debo hacer y con mucho gusto lo analizo y trato de ayudarlo en lo que más pueda, estoy atento a la recepción del archivo que tenga un feliz día!
Vale, muchas gracias.
Te acabo de mandar el archivo.
Bueno ya hice la prueba que necesitaba hacer y a mi parecer la macro funciona muy bien, tengo algunas recomendaciones para hacerle con el fin del buen funcionamiento de la macro:
1. Debe calcular cuantas filas o registros tiene la macro que procesar, este dato lo obtiene restando las primeras 3 filas (1-3) vacías de la menos la ultima fila que tiene información, por ejemplo para el archivo que me mano hay exactamente 1048 registros, obtenido este dato, debe abrir el editor de visual basic (Alt + F11) y allí debe aparecer una opción en el panel izquierdo que se llama "Modulo1", hace doble click sobre el y allí se muestra el código, en la linea que dice Y=1048, va a remplazar ese 1048 por la cantidad de filas a procesar.
2. Debe copiar la columna A y B y pegar esos datos tal cual en las columnas AC y AD
3. En el rango AE2 debe siempre haber información para que la macro se ejecute.
4. Y por ultimo no tocar ninguna otra linea de código, debido a quecualquier modificación por mínima que sea dañara la macro.
Al finalizar la macro mostrara un mensaje de finalización, bueno espero que le sea útil y no olvide puntuar y finalizar la pregunta en todoexpertos, que tenga un feliz día!
Saludos!
A continuación dejo la macro, tal vez alguien la lea y le sea de utilidad:
Sub agrupar_series()
'MACRO DESARROLLADA POE EDWIN MORENO
'21/12/2010
'TULUA - VALLE DEL CAUCA, COLOMBIA
'MACRO SIN COMENTAR
'VARIABLES SIN DECLARAR
y = 1048
contador = 1
celda = Sheets("Hoja1").Range("C3").Address
Range(celda).Select
For a = 1 To y
ActiveCell.Offset(a, 0).Select
salida3:
If (ActiveCell.Value = Empty) Then
    Range(celda).Select
    GoTo siguiente_linea
End If
Do While Not IsEmpty(ActiveCell)
b = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
c = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
    Do While Not IsEmpty(ActiveCell)
    If (ActiveCell.Value = b) Then
        ActiveCell.Offset(0, 1).Select
        If (ActiveCell.Value = c) Then
            contador = contador + 1
            ActiveCell.Offset(0, 1).Select
            Else
                ActiveCell.Offset(0, -1).Select
                GoTo mensaje
        End If
        Else
            GoTo mensaje
    End If
    Loop
Loop
mensaje:
direccion = ActiveCell.Address
Range("AE2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(a, 0).Select
If (ActiveCell.Value = Empty) Then
    ActiveCell.Value = b
    ActiveCell.Offset(0, 1).Select
        If (ActiveCell.Value = Empty) Then
        ActiveCell.Value = c
        ActiveCell.Offset(0, 1).Select
            If (ActiveCell.Value = Empty) Then
            ActiveCell.Value = contador
            b = Empty
            c = Empty
            contador = 1
            Range(direccion).Select
            GoTo salida3
                Else
                    GoTo salida2
            End If
            Else
                GoTo salida2
        End If
    Else
        GoTo salida2
End If
salida2:
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(0, 1).Select
Loop
ActiveCell.Value = b
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = c
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = contador
Range(direccion).Select
contador = 1
GoTo salida3
Loop
siguiente_linea:
Next
MsgBox "PROCEDIMIENTO FINALIZADO!"
End Sub
Muchísimas gracias, te has esforzado mucho en ayudarme. Creía que era algo totalmente imposible y me lo has resuelto perfectamente. Eres un fiera.
Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas