Copiar datos de un libro a otro según criterio de horas

Estoy intentando hacer una macro en VBA para solucionar el siguiente problema:

Libro1:

Este Libro es donde extraigo los datos de un servidor y me queda como una tabla.

En la columna A esta "Hora" y tengo las 24 horas (no siempre). Pero solo me interesa desde las 10 a las 24

Luego tengo las Columnas D y F donde están los datos que me interesan, las demás columnas hasta la AE las omito.

Libro2:

Este libro es donde tengo todas las tablas con formulas y es donde pego esos datos de las horas del Libro 1

Este libro también tiene la columna A como Hora y tengo las horas que me interesan 10:00 hasta las 24:00.

Problema:

El problema que tengo es que no se como hacer que desde VBA haga lo siguiente:

Libro1 recorrer la Columna A y encuentre cada hora desde las 10:00 hasta las 24 y copie los datos de la columna D y F al Libro2 en las columnas D y L de cada hora. (Las 10:00 no siempre esta en la misma fila, a veces el servidor no saca las 24 horas porque no trabaja nadie en nocturno)

Ejemplo:

Libro1:

A13 contiene las 10:00 entonces copia D13 y F13 al Libro2 (busca donde esta las 10:00) y pega los datos en D8 y L8

Y así con todas las horas restantes.

A14 contiene las 11:00 entonces copia D14 y F14 al Libro2 (busca donde esta las 11:00) y pega los datos en D9 y L9

El libro2 como es una plantilla suelo tener siempre las 10:00 en A8 pero por si acaso estaría bien que cotejara primero antes de pegar.

¿Esto se puede hacer? No se si me he explicado bien jeje..

Respuesta
1

Visita:
Cursos de Excel y Macros

----------------------------------

Bienvenido a TodoExpertos!

Prueba la siguiente macro.

- Pon la macro en un libro nuevo y guardas el libro como excel habilitado para macros.

- Abres el libro1 y el libro2.

- Cambia en la macro "libro1" y "libro2" por los nombres de tus libros.

- Los datos deberán estar en la primera hoja de cada libro.

- Ejecuta la macro.

Sub Copia_Horas()
'Por Dante Amor
  Dim wb1 As Workbook, wb2 As Workbook
  Dim sh1 As Worksheet, sh2 As Worksheet
  Dim i As Long, j As Long
  Dim c As Range, f As Range
  Dim t1 As String, t2 As String
  Set wb1 = Workbooks("Libro1")     'Pon aquí el nombre del libro1
  Set wb2 = Workbooks("Libro2")     'Pon aquí el nombre del libro2
  Set sh1 = wb1.Sheets(1)
  Set sh2 = wb2.Sheets(1)
  '
  For i = 8 To sh1.Range("A" & Rows.Count).End(3).Row
    If sh1.Range("A" & i).Value >= TimeValue("10:00") And _
      sh1.Range("A" & i).Value <= (TimeValue("23:59") + TimeValue("00:01")) Then
      t1 = Format(sh1.Range("A" & i).Value, "hh:mm am/pm")
      For j = 8 To sh2.Range("A" & Rows.Count).End(3).Row
        t2 = Format(sh2.Range("A" & j).Value, "hh:mm am/pm")
        If t1 = t2 Then
          sh2.Range("D" & j).Value = sh1.Range("D" & i).Value
          sh2.Range("L" & j).Value = sh1.Range("F" & i).Value
          Exit For
        End If
      Next
    End If
  Next
End Sub

----------------------------------

Recomendaciones de mi canal:

Cursos de excel:

Curso de excel. Consejos y trucos de excel para mejorar la presentación de tus datos. - YouTube

Curso de excel. Hipervinculo excel. Ir en automático a otra hoja y seleccionar la celda deseada. - YouTube

Cursos de Macros:

Curso de macros. Consejos para empezar a programar. - YouTube

Curso de macros. Consejos para empezar a programar. - YouTube

----------------------------------

Sal u dos Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas