Realizar codificación consecutiva en excel

Hola a todos, mi pregunta esta relacionado con crear una codificación mediante números en excel, para numerar distintas partidas de obra.

Se trata de, a partir del un archivo en excel que crea un programa automáticamente compuesto de capítulos (grupos de partidas) y partidas, numerarlos. El archivo cuando se crea contiene muchos capítulos y partidas, los capítulos aparecen con un numero consecutivo por ejemplo: 01. Movimiento de tierras, 02 cimentación, etc pero las partidas aparecen con un código correspondiente a cada partida, de modo que si una partida es "excavación en zanja", esta aparece con el mismo código en cada capitulo que aparece la partida. Lo que querría hacer es que las numere, de modo que aunque se repita aparezca con códigos diferentes.

Lo que necesito es que basándose en el capitulo en que se encuentren las partidas en la Columna A y ayudándose de que en la columna B aparece la palabra partida, una macro renombre ese código que aparece en la columna A en cada partida a: 01.01, 01.02, y así hasta que se llegue al siguiente capitulo, donde las partidas serán 02.01, 02.02, etc.Y y si contiene subcapitulos, donde el primer subcapitulo es 01.01, pues el código de las partidas se renombrará a: 01.01.01, 01.01.02, etc.

Adjunto archivo de ejemplo con dos hojas, la hoja 1 con el archivo original (muy reducido ya que puede contener hasta 5000 filas) y la hoja 2 como debe de quedar después de ejecutar la macro.

https://dl.dropboxusercontent.com/u/60207517/PRESUPUESTO.xls 

Muchas gracias

La pregunta va dirigida a Dante Amor, que ya resolvió una pregunta similar en el pasado. Aunque es bienvenida cualquier respuesta.

Gracias a todos

1 Respuesta

Respuesta
1

Te anexo la macro para la numeración

Sub RealizarCodificacion()
'Por Dante Amor
    sig = 1
    n = 1
    For i = 3 To Range("B" & Rows.Count).End(xlUp).Row
        If Cells(i, "B") = "Capítulo" Then
            num = Trim(Cells(i, "A"))
            n = 1
        ElseIf Cells(i, "B") = "Partida" Then
            Cells(i, "A") = num & "." & Format(n, "00")
            n = n + 1
        End If
    Next
    MsgBox "Numeración terminada"
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas