Hacer un función genérica (VBA) para copiar dos rangos de celdas de una a otra hoja.

Muy buenas intentaré resumir de la mejor manera. Tengo un libro excel que abro todos los días, mediante un formulario introduzco varios datos. Por poner un ejemplo comparativo de fácil comprensión:

Tengo una empresa y en el formulario cada día introduzco varios datos, horas extras de cada trabajador, los kilómetros que hace con el coche y alguna cosa más. La  hoja lleva como nombre la fecha actual y siempre la crea en la misma posición (4), es decir la de ayer me ocupara las posición (5), anteayer la posición (6)... Hasta aquí todo conseguido. Ahora  quiero que en una hoja llamada resumen que ocupa siempre la misma posición (2), me muestre un resumen de los últimos cinco días de cada trabajador.

Resumiendo un poco querría hacer una función genérica para copiar varios datos de una hoja a otra. Uno de los problemas q tengo es q las celdas no son un rango único, sino q son:

De la hoja q ocupa la posición cuarta copiar las celdas: C2, B6,C6,D6,F6,G6 a la hoja resumen (2) C5,D5,E5,F5,G5,H5.

Me gustaría hacer una función con variables en la que yo le pasará los datos. O a lo mejor es demasiado lío y es mejor hacer una función específica para cada trabajador...

Espero haberme explicado, gracias por vuestro tiempo.

1 respuesta

Respuesta
1

Envíame tu libro con las hojas: resumen y las últimas 5 hojas, me muestras en resumen con colores lo que quieres poner de cada una de las hojas. En las hojas, me muestras con el color correspondiente lo que pasaste a la hoja resumen.

Libro enviado y gracias...

Te envié el archivo con la macro en la hoja "resumen", prueba y me comentas.

Anexo la macro que te envié en el archivo

Sub resumen()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Resumen")
    For i = 5 To 9
        Set h2 = Sheets(i)
        For j = 6 To 18
            Set b = h1.Cells.Find(h2.Cells(j, "A"))
            If Not b Is Nothing Then
                f = b.Row - 7 + i
                h1.Cells(f, b.Column + 1) = h2.[C2]
                h1.Cells(f, b.Column + 2) = h2.Cells(j, "B")
                h1.Cells(f, b.Column + 3) = h2.Cells(j, "C")
                h1.Cells(f, b.Column + 4) = h2.Cells(j, "D")
                h1.Cells(f, b.Column + 5) = h2.Cells(j, "F")
                h1.Cells(f, b.Column + 6) = h2.Cells(j, "G")
            End If
        Next
    Next
    Application.ScreenUpdating = True
    MsgBox "Resumen terminado", vbInformation, "Fecha :" & Date
End Sub

Caramba...en pocas líneas y si perfectisimo era lo que quería.El único problema es que quería hacer lo mismo con la otra hoja de resumen2 con los otros datos. La idea era hacerlo yo..pero no entiendo bien este código, mis conocimientos no son tan profundos....no lo acabo de ver...Te importaría echarme otra mano

Gracias, pero muchas ehh

Con gusto te sigo ayudando, valora esta respuesta.

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

Crea una nueva pregunta con lo nuevo que necesitas. De igual forma explícame con colores los datos y los resultados que esperas. Si gustas en el título de la pregunta puedes poner que va dirigida a Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas