Macro para obtener un consecutivo en base a dos criterios

Quiero obtener un consecutivo automático al ejecutar una macro en base a la secuencia o número de registros y a su fecha, el cual se incrementa a la cantidad de filas que contenga la tabla de datos.

La estructura del consecutivo es la siguiente: AAMMXXX, donde AA es el año MM es el mes y XXX corresponde al número de registro. Los caracteres del mismo tendría una longitud de 7 caracteres.

Agradeciendo como siempre tu valiosa ayuda.

4 Respuestas

Respuesta
2

¿Pero el consecutivo siempre va en aumento o debe iniciar de 1 cuando cambia el mes o cuando cambia el año?

O el consecutivo se debe tomar de la columna A, si es así, ejecuta la siguiente macro:

Sub Consecutivo()
    With Range("C2:C" & Range("B" & Rows.Count).End(xlUp).Row)
        .Formula = "=TEXT(RC[-1],""aa"")&TEXT(MONTH(RC[-1]),""00"")&TEXT(RC[-2],""000"")"
        .Value = .Value
    End With
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

¡Gracias! 

Si dante el consecutivo cambia por año y por mes

Dante corrí la macro pero el año sale como texto

Tienes tu excel en inglés, entonces prueba con esto:

Sub Consecutivo()
    With Range("C2:C" & Range("B" & Rows.Count).End(xlUp).Row)
        .Formula = "=TEXT(RC[-1],""yy"")&TEXT(MONTH(RC[-1]),""00"")&TEXT(RC[-2],""000"")"
        .Value = .Value
    End With
End Sub

No entendí esto:

Si dante el consecutivo cambia por año y por mes

El cambio de mes y de año están en la misma columna, puedes poner ejemplos

O prueba con esta:

Sub Consecutivo()
    With Range("C2:C" & Range("B" & Rows.Count).End(xlUp).Row)
        .Formula = "=RIGHT(YEAR(RC[-1]),2)&TEXT(MONTH(RC[-1]),""00"")&TEXT(RC[-2],""000"")"
        .Value = .Value
    End With
End Sub

[sal u dos

h2.Cells(j, "C") = Year(h1.Cells(i, "B"))& Month(h1.Cells(i, "B"))&(h1.Cells(i, "A"))

Dante y si hacer un bucle for donde tome algo parecido a un código anterior y lo concatene?

¿Probaste la última macro?

Sub Consecutivo()
    With Range("C2:C" & Range("B" & Rows.Count).End(xlUp).Row)
        .Formula = "=RIGHT(YEAR(RC[-1]),2)&TEXT(MONTH(RC[-1]),""00"")&TEXT(RC[-2],""000"")"
        .Value = .Value
    End With
End Sub

Es más rápida que el bucle!


Pero si lo quieres con bucle:

Sub consecutivo2()
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        Cells(i, "C").Value = Format(Cells(i, "B").Value, "yy") & Format(Cells(i, "B").Value, "mm") & Format(Cells(i, "A").Value, "000")
    Next
End Sub

[sal u dos

¡Gracias! 

Excelente funciona perfecto 

Respuesta
2

Prueba esta macro

y este es el codigo

Sub consecutivos()
With Range("c2")
    .Formula = "=year(b2) & month(b2) & text(a2,""000"") "
    .AutoFill Destination:=Range("c2:c9"), Type:=xlFillDefault
    .CurrentRegion.Value = .CurrentRegion.Value
End With
End Sub
Respuesta
1

Esto puede aportar algo más

https://youtu.be/pWWyKQ86xLE

Fijate como crea autonumerico consecutivo al guardar una factura

https://youtu.be/0UuR_zRQCB4

https://youtu.be/smL4A-aRjCM

Respuesta
1

Solución con fórmula:

En C2:  =CONCATENAR(EXTRAE(AÑO(B2);3;2);TEXTO(MES(B2);"00");TEXTO(A2;"000"))

Y luego la arrastras hacia abajo.  Queda así:

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas