Excel, macro copiar con condición

Tengo una macro que guarda datos ingresado a un formulario en "hoja2", y necesito que de los datos(fila a :nombre, fila b:rut d:otro dato, se van agregando en la fila dos y si ingreso de nuevo se desplazan hacia abajo, eso ya esta listo)se copien y distribuyan solo si la celda j2 es verdadero, se copien a hoja3, si k2 es verdadero se copie a hoja4, l2 es verdadero se copie a hoja5. A la primera fila libre que encuentren de abajo hacia arriba.

1 respuesta

Respuesta
1

Si solamente se cumple un verdadero entonces utiliza el siguiente código:

    Set h2 = Sheets("Hoja2")     'hoja con datos
    '
    If h2.Range("J2") = True Then
        Set h3 = Sheets("Hoja3")
    ElseIf h2.Range("K2") = True Then
        Set h3 = Sheets("Hoja4")
    ElseIf h2.Range("L2") = True Then
        Set h3 = Sheets("Hoja5")
    End If
    '
    H2. Rows(2). Copy h3.Range("A" & h3.Range("A" & Rows. Count).End(xlUp). Row + 1)

Si puede ser que se cumplen varios verdadero, es decir, si J2 es verdadero que copia en hoja3, y si también K2 es verdadero que también copie en en la hoja4, etc; entonces utiliza el siguiente código:

    Set h2 = Sheets("Hoja2")     'hoja con datos
    '
    If h2.Range("J2") = True Then
        Set h3 = Sheets("Hoja3")
        h2.Rows(2).Copy h3.Range("A" & h3.Range("A" & Rows.Count).End(xlUp).Row + 1)
    End If
    If h2.Range("K2") = True Then
        Set h3 = Sheets("Hoja4")
        h2.Rows(2).Copy h3.Range("A" & h3.Range("A" & Rows.Count).End(xlUp).Row + 1)
    End If
    If h2.Range("L2") = True Then
        Set h3 = Sheets("Hoja5")
        h2.Rows(2).Copy h3.Range("A" & h3.Range("A" & Rows.Count).End(xlUp).Row + 1)
    End If

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

mira, la formula que me envió esta excelente, hay detalles que probablemente los pásate por alto por la poca información que envié, y desde ya te agradezco tu dedicación, por en serio que me estuve intentando como hacerla.

cuando j2 esta verdadero en Hoja2, que copie solamente de b2 hasta h2 (de esta hoja), y los pegue en hoja tres con la misma distribución en la primera fila que encuentre libre desde abajo hacia arriba(como lo dejaste tu) pero solo esas celdas, lo mismo si encuentra que k2 en hoja2 es verdadero, entonces copie de b2 a h2 de esta hoja hacia la hoja 4 con la misma distribución.

desde ya te agradezco tu paciencia y dedicación. 

Te envío el código actualizado

    Set h2 = Sheets("Hoja2")     'hoja con datos
    '
    If h2.Range("J2") = True Then
        Set h3 = Sheets("Hoja3")
        h2.range("B2:H2").Copy h3.Range("A" & h3.Range("A" & Rows.Count).End(xlUp).Row + 1)
    End If
    If h2.Range("K2") = True Then
        Set h3 = Sheets("Hoja4")
        h2.range("B2:H2").Copy h3.Range("A" & h3.Range("A" & Rows.Count).End(xlUp).Row + 1)
    End If

También te faltó mencionar en cuál columna pegar, la macro está pegando en la columna "A", si quieres que pegue en la columna "B", entonces cambia las "A" por "B".

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 

¡Gracias! , de verdad me solucionaste el problema, había leído prácticamente todos tus comentarios referente a esto y no podía extrapolar los datos, y con la poca información que te di fuiste capaz de darme la solución. de hecho pensé en un momento que ya no estabas activo, suerte para mi y para la comunidad que lo estas, gracias a gente como tu uno aprende mas de la programación. le agregue que copie algunas celdas de una hoja y otras desde otra, y funciona bien. gracias otra vez

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas