Renovar fechas de vencimiento en excel

quiero hacer en excel una columna que tenga fechas en orden consecutivo por ejemplo:

14/09/2012

15/09/2012

16/09/2012

pero cuando la fecha actual sea mayor que el primer registro que dicha fecha pase al final de la lista automáticamente pero con la fecha del siguiente año por ejemplo

el primer registro 14/09/2012 si la fecha actual es 15/09/2012 que esta primera fecha (14/09/2012) pase al final como 14/09/2013 asi:

15/09/2012

16/09/2012

14/09/2013

Como puedo hacerlo gracias de antemano

1 respuesta

Respuesta
1

Te paso mi solución, sigue mis instrucciones:

-Tenemos la columna con las fechas ordenadas de menor a mayor.

-Ahora te posicionas en la primera fecha de la columna y después ejecutas esta macro:

Sub prueba()
'por luismondelo
Cells(65000, ActiveCell.Column).End(xlUp).Offset(1, 0).Value = "final"
Do While ActiveCell.Value <> "final"
If Date > ActiveCell.Value Then
ActiveCell.Value = Day(ActiveCell.Value) & "/" & Month(ActiveCell.Value) & "/" & Year(ActiveCell.Value) + 1
ActiveCell.Value = Format(ActiveCell.Value, "dd/mm/yyyy")
ActiveCell.Cut Destination:=Cells(65000, ActiveCell.Column).End(xlUp).Offset(1, 0)
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.ClearContents
ActiveCell.Delete
End Sub

no olvides finalizar la consulta

Te mando una modificación por si te gusta más que quede así.

Las instrucciones son las mismas

Sub prueba()
'por luismondelo
Cells(65000, ActiveCell.Column).End(xlUp).Offset(1, 0).Value = "final"
Do While ActiveCell.Value <> "final"
If Date > ActiveCell.Value Then
lista = lista & "," & ActiveCell.Address
ActiveCell.Value = Day(ActiveCell.Value) & "/" & Month(ActiveCell.Value) & "/" & Year(ActiveCell.Value) + 1
ActiveCell.Value = Format(ActiveCell.Value, "dd/mm/yyyy")
ActiveCell.Cut Destination:=Cells(65000, ActiveCell.Column).End(xlUp).Offset(1, 0)
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
ActiveCell.ClearContents
ActiveCell.Delete
lista = Mid(lista, 2, Len(lista) - 1)
Range(lista).Delete
End Sub

recuerda finalizar

no se si estoy ejecutando bien el macro me sitúo en la celda a y copio el código desde view en la ventana de macro pero no se si hay una forma de comprobar que lo estoy haciendo bien?

Tienes que copiar la segunda macro en un módulo. Después te posicionas en la primera fecha de la columna y ejecutas la macro.

La macro está probada y funciona perfectamente.

No me funciona lo que he puesto en el modulo es esto:

Sub fecha()
'
' fecha Macro
'
' Keyboard Shortcut: Ctrl+q
'
Range("A2").Select
Application.Run "VENCIMIENTOS_2.xls!fecha"
Range("A2").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
'por luismondeloCells(65000, ActiveCell.Column).End(xlUp).Offset(1, 0).Value = "final"Do While ActiveCell.Value <> "final"If Date > ActiveCell.Value Thenlista = lista & "," & ActiveCell.AddressActiveCell.Value = Day(ActiveCell.Value) & "/" & Month(ActiveCell.Value) & "/" & Year(ActiveCell.Value) + 1ActiveCell.Value = Format(ActiveCell.Value, "dd/mm/yyyy")ActiveCell.Cut Destination:=Cells(65000, ActiveCell.Column).End(xlUp).Offset(1, 0)ActiveCell.Offset(1, 0).SelectElseActiveCell.Offset(1, 0).SelectEnd IfLoopActiveCell.ClearContentsActiveCell.Deletelista = Mid(lista, 2, Len(lista) - 1)Range(lista).Delete
End Sub

me sale un error 28 alguna idea??

Lo que me mandas es totalmente ilegible ya que se mezclan las líneas de código y no puedo ver nada. Vamos a hacer otra cosa, dame tu mail y te mando un ejemplo preparado y funcionando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas