Copiar fecha hasta la siguiente celda con fecha

Expertos,

Buenas tardes, espero que me puedan ayudar con el siguiente problema...

En una misma columna necesito replicar hacia abajo la fecha de una celda hasta la próxima celda que contenga fecha, y hacer lo mismo hasta terminar.

Intente hacerlo con la siguiente macro pero me recorre el libro, pero no me replica las fechas.

Primero intenté identificar cual seria el final de los datos que tengo en el informe
Luego intente recorrer las celdas con datos e identificar si en la celda había formato con fecha, si lo había que pudiera copiar la fecha hasta la siguiente celda con formato fecha.

Espero que me puedan ayudar, no se si existirá algo más simple para hacer lo que necesito.

Sub Macro1()

Dim F, UR, SF As Long

F = 1

UR = [C60000].End(xlUp).Row

inicio:

If F > UR Then

GoTo fin

Else

Cells(F, 3).End(xlDown).Offset(1, 0).Select
F = ActiveCell.Row

If IsDate(Cells(F, 3)) Then
SF = ActiveCell.End(xlDown).Offset(1, 0).Row
Range(Cells(F, 3), Cells(SF, 3)).Select

Selection.AutoFill Destination:=Range(Cells(F, 3), Cells(SF, 3)), Type:=xlFillCopy

Else
F = F + 1
GoTo inicio:
End If

End If

fin:

End Sub

1 Respuesta

Respuesta
2

Puedes poner una imagen de cómo están tus datos y otra imagen con el resultado esperado.

Para añadir una imagen:

Para subir una foto o una imagen, tienes que guardar la imagen con formato jpg

Ya que tienes tu imagen en un archivo, presiona el icono de añadir imagen:

En la siguiente ventana que te aparece:

Presiona el botón Subir imagen. Selecciona el archivo con tu imagen y presiona Abrir.

Hola, muchas gracias por la disposición ! 

Te adjunto una imagen... (los colores son solo para hacer notas las diferencias, no son necesarios en la macro) 

Las fechas siempre estarán en la columna C, solo que dependiendo la cantidad de registros por día la distancia que existe entre fecha y fecha no será la misma..  algunas veces el informe tambien deja otros datos en celdas de la columna C, entonces necesito que la macro solo replique las fechas. 

Espero se haya entendido.

En la imagen no se aprecian las filas ni las columnas de excel, así que voy a suponer un par de cosas.

La primer fecha está en la celda C2, por lo tanto hay que rellenar desde la celda C3.

En tu ejemplo la fecha 04/03/2018 es la última fecha, pero no se ve hasta qué fila deberá rellenarse, voy a suponer que en la columna A tienes datos, entonces tomaré la columna A como referencia para saber hasta donde se tiene que rellenar la columna C

Te anexo la macro

Sub Macro5()
'Por Dante Amor
    With Range("C3:C" & Range("A" & Rows.Count).End(xlUp).Row)
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
End Sub


Solamente ajusta en la macro la columna "A" por la letra de la columna que tiene la mayor cantidad de datos.

Avísame cualquier duda.

.

.

Muchas gracias !

Funcionó perfect!

Yo tenía una macro que recorrería celda por celda para hacer la misma operación...

Desde hace un tiempo estoy aprendiendo macro.. y me gusta aprender con las cosas que hago-...

¿Es mucha molestia si me explicas los códigos de tu macro? Intente descifrar pero esta difícil...

Por supuesto

' Con la declaración With en Vba nos permite ejecutar un conjunto de instrucciones sin tener que volver a hacer referencia al mismo objeto

With Range("C3:C" & Range("A" & Rows.Count).End(xlUp).Row)

En este caso el objeto es un rango de celdas  

Range("C3:C" & Range("A" & Rows. Count).End(xlUp). Row)

El rango de celdas va desde la celda C3 y hasta la C y última fila con datos de la columna A

Para obtener la última fila con datos de la columna A, se utiliza:

Range("A" & Rows. Count).End(xlUp). Row

Lo que hace la siguiente instrucción es poner una fórmula en todas las celdas vacías del rango

.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"

La fórmula solamente es seleccionar el dato de la celda de arriba.

Por ejemplo en la celda C3 pone la fórmula

=C2

Eso significa que si en la celda C2 tienes 03/03/2018, en la celda C3 te va a poner lo mismo: 03/03/2018

Ya por último, la siguiente instrucción pasa los valores del rango al mismo rango, pero con esto está cambiando las fórmulas a valor.

.Value = .Value

Regresa los datos originales, quita la línea .value = .value de la macro y ejecuta la macro nuevamente, ve a la hoja de excel y revisa el resultado en las celdas vacías.


sal u dos

¡Gracias! 

Muchas gracias !! 

No entendía esto, 

FormulaR1C1 = "=R[-1]C"

Muy buena la lógica que utilizaste para resolver el problema, mucho más rápida que como yo lo había pensado. 

Muchas gracias por la explicación, comenzaré a utilizar estos códigos en mis macros. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas