Como guardar datos de un bloque de filas en otra hoja en filas diferentes

Espero que me puedan ayudar, estoy haciendo un macros pero tengo problemas al querer guardar los datos de una tabla

Por ejemplo en la hoja1 tengo una tabla con

Código producto cantidad

1 xxxx 5

2 xxx 3

En esta tabla lo que siempre va variar es la cantidad, y quiero hacer una macros que solo me guarde en los productos con cantidad en la hoja2 y que me los vaya guardando pero en bloque y por fecha, me podrían ayudar, he intentado hacer que me guarde, pero solo consigo que me guarde una fila .

1 Respuesta

Respuesta
1

Te anexo la macro. Lo que hace es revisar desde la fila 2 y hasta la última fila de la columna "A", si en la columna "C" hay cantidad, copia la fila a la hoja2. También en la columna "D" de la hoja2 le pone la fecha.

No pusiste varios datos de las referencias de filas y columnas de la hoja1 ni de la hoja2, tampoco pusiste los nombres de las hojas, cambia en la macro "Hoja1" y "hoja2" por los nombres reales de las hojas.

Sub GuardarBloque()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "C") > 0 Then
            u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
            h1.Rows(i).Copy h2.Rows(u)
            h2.Cells(u, "D") = Date
        End If
    Next
    MsgBox "Bloque copiado", vbInformation
End Sub

Si tienes dudas para adaptar la macro a tus hojas avísame para apoyarte, y me indicas con referencias cómo tienes los datos.

Saludos. Dante Amor

No olvides valorar la respuesta

Gracias Dante por responder, pero quizar no me explique muy bien, más que todo lo que deseo es que mi hoja1 la estoy usando como un formato de pedidos donde tengo varias tablas que son llenadas por día y por hora según pedido algo así

Código producto uidad cantidad

01          leche            lt         1

02         azucar          kg         0 

03          pan            paqt       0

04        vino             botella    2

Así son mis tablas en la hoja1 que llama formatopedido donde solo varia la cantidad

Necesito una macros que cuando le de guardar pedido me registre en la hoja2 solo los productos con cantidad mayor a 0

Pero que me los guarde en bloque por fecha y hora quedando algo así como el ejemplo de abajo.

Y que al guardar me limpie o devuelva los valores de cantidad a 0,

Es así como en la hoja1 tengo mis tablas y necesito guardar todo los pedidos por día y hora, al día siguiente me seguirá guardando consecutivamente mis pedidos.

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

fecha                   hora    mes          dia         codigo     producto  undida    cantidad

19/01/2015          10:00   enero      domingo     01          leche     lt                 1

19/01/2015          10:00   enero      domingo     04          vino     botella            2

Espero me puedas ayudar y disculpa nomas.

Para adecuar la macro, tienes que poner las referencias de filas y de columnas de ambas hojas, o pon imágenes de las 2 hojas.

Tienes que poner en qué fila y en qué columna están los datos.

Estimado

Adjunto las imágenes.

¿Y quieres que se haga con las 5 tablas?

No entiendo muy bien tu ejemplo, ¿en la hoja "Pedido" tienes pan francés con cantidad 1 y en la "Hoja2" tienes pan francés con 8. Los otros ejemplos tampoco concuerdan?

También veo que tienes "Cuchar descartab" con 2 paquetes, pero no lo veo en la "hoja2".

Hola buen día, disculpa por no ser claro aquí te envío dos imágenes más

1. En la macros al ejecutar el botón guardar que esta en la hoja PEDIDO, me los registre en la GUARDARregistros pero solo los productos que tienen cantidad mayor que "0", también que ala ves me regrese a 0 los valores cuando ya se haya guardado el pedido.

Disculpa nuevamente, espero me ayudes, lo intentado pero me guarda todos lo registros, lo ideal seria que me guarde solo los requeridos.

Saludos!.

Utiliza la siguiente macro

Sub GuardarBloque()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Pedido")
    Set h2 = Sheets("GuardarRegistros")
    Set r = h1.Cells
    Set b = r.Find("CANTIDAD", lookat:=xlWhole)
    '
    If Not b Is Nothing Then
        ncell = b.Address
        Do
            f = b.Row + 1
            c = b.Column - 4
            Do While h1.Cells(f, c) <> ""
                If h1.Cells(f, b.Column) > 0 Then
                    h1.Range(h1.Cells(f, c), h1.Cells(f, b.Column)).Copy
                    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
                    h2.Range("A" & u2) = Year(Date)
                    h2.Range("B" & u2) = Date
                    h2.Range("C" & u2) = Time
                    h2.Range("D" & u2) = Day(Date)
                    h2.Range("E" & u2) = Month(Date)
                    h2.Range("F" & u2).PasteSpecial Paste:=xlPasteValues
                    h1.Cells(f, b.Column) = 0
                End If
                f = f + 1
            Loop
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> ncell
    End If
    Application.CutCopyMode = False
    MsgBox "Bloque copiado", vbInformation
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas