Macro para copiar hojas de un libro a una hoja total

Quisiera hacer una macro que me copie los datos de las diferentes hojas del libro ordenándolas por horario y grupo de trabajo a una hoja total . Gracias por tu atención Dante, ha sido una alegría volver a verte.

1 Respuesta

Respuesta
1

Puedes darme el detalle de cómo tienes la información en cada hoja a copiar. Por cuál columna ordenar y exactamente en cuál hoja-celda pegar.

Con un par de imágenes quedaría bien explicado.

Te envío al correo los archivos para que puedas verlo. Todas las hojas son iguales y lo que quiero es que todos los daros sean copiados en una hoja total ordenados por el horario.

Sería conveniente si puedes poner aquí los ejemplos, para que todos puedan ver el problema y la solución.

Hola Dante aqui te dejo las imagenes, espero que lo haya explicado mas o menos... si tienes alguna sugerencia para mejorar la pagina te lo agradeceria. Un saludo.

Ya revisé tus datos y encuentro la siguiente situación.

Para que la macro sea viable o funcional, deberás llenar todas las celdas que son "llave"

No importa que se repitan los datos, con una celda vacía, no se puede saber el dato a dónde pertenece.

Ejemplo:


Entiendo que obviamente el dato pertenece a la fila anterior, pero no es correcto obviar información. Si la información está completa como en mi ejemplo, la macro será más práctica de realizar.

Avísame si puedes realizar esos cambios.

Entonces me es complicado porque las hojas las envían otras personas con los datos de sus trabajos y siempre dejan alguna celda sin cubrir. Suelen presentar así los datos.

¿

Podría ser combinando celdas? Osea en la columna A las celdas 4,5,6! Combinarlas en 1 y en la columna B las celdas 5 y 6. Por ejemplo

NOOOO, combinar celdas es lo peor que puedes hacer en un archivo que será utilizado como base de datos.


Reviso tus datos.

Solamente confirma lo siguiente: Entonces los datos de las celdas vacías, ¿son los datos de las celdas de arriba?

Si seria así. Si a ti se te ocurre otro formato por favor dime, lo importante es que todos las hojas sean iguales (el formato) y se copien a una hoja principal. Gracias

Como te comenté es difícil saber cuáles datos "solitarios" pertenecen al IND, por ejemplo. Cómo deberían llenarse los siguientes datos con marca en azul:

¿O simplemente copio toda la hoja "1" y la pego en la hoja "total", después copio la hoja "2" y la pego debajo de los datos existentes en la hoja "total"?

¿Por cierto, cuántas hojas hay en tu libro?

La idea es copiar las hojas a la hoja total y que salgan ordenadas  por horario haciendo mención  al titulo de la hoja donde están los datos . Son 8 hojas mas la total. Te puedo enviar por correo los archivos que se utilizan actualmente para que los veas y me aconsejes?

El problema es que no puedes ordenar por horario, existen varias celdas vacías. Si no me indicas cómo se deben llenar entonces yo no sabría cómo llenarlo.

Mi consejo es que todos los datos relevantes deberían venir llenos.

Te envío por correo mi idea para que todas las celdas estén con datos, te pongo la hoja total que actualmente se hace pero creo que se debiera de hacer la misma que el resto de hojas.

Te acabo de enviar al correo tuyo que tengo el archivo con las modificaciones que me dices a ver si se puede hacer mejor. Mi correo es [email protected]

Te anexo la macro

Sub Copiar_Datos()
  Dim sh1 As Worksheet, sh As Worksheet
  Dim i As Long, j As Long
  '
  Application.ScreenUpdating = False
  Set sh1 = Sheets("TOTAL 1")
  sh1.Range("A5:H" & Rows.Count).Clear
  j = 5
  '
  For Each sh In Sheets
    Select Case LCase(sh.Name)
      Case LCase("TOTAL"), LCase(sh1.Name)
      Case Else
        For i = 4 To sh.Range("A" & Rows.Count).End(3).Row
          If sh.Range("A" & i).Value <> "" Then
            If Left(sh.Range("C" & i).Value, 7) <> "OFICINA" Then
              sh1.Range("A" & j).Value = sh.Name
              sh.Range("A" & i & ":G" & i).Copy sh1.Range("B" & j)
              j = j + 1
            End If
          End If
        Next i
    End Select
  Next sh
  sh1.Range("A5:H" & j - 1).Borders.LineStyle = xlContinuous
  Application.ScreenUpdating = True
  MsgBox "Fin"
End Sub

Muchas gracias Dante

Buenos días dante, ¿se podría hacer que la macro ordenara por horario al copiar los datos?

Hay alguna manera que al copiar los datos le asigne un color a las filas según de donde procedan?  Gracias

Hola Dante como puedo hacer para que la hoja donde se copian los datos, el formato de la misma se modifique según el ancho de los datos copiados, es que cada vez que copio los datos el ancho de las filas no cambia el formato. Me gustaría que el ancho de las filas se ajustara según el texto copiado y que el tamaño de la letra sea el mismo en todas las filas. ¿Puede ser?

Gracias

Comparte tu archivo en googledrive, ahí en la hoja me explicas cuál es el problema.

¡Gracias! 

Después de esta línea:

sh1.Range("A5:H" & j - 1).Borders.LineStyle = xlContinuous

Agrega esta línea:

Sh1.Range("A5:A" & j). EntireRow. AutoFit

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas