Copiar determinadas columnas de una fila en las mismas columnas en otra hoja y otra fila si cumple una condición, con bucle.

Me gustaría, si pueden ayudarme con el siguiente caso, ya que he intentado adaptar varios códigos y sigo sin que me salga correctamente.

En la hoja "GENERAL" tengo una serie de datos desde la columna A hasta la J empezando por la fila 100, quisiera que en función del valor de la columna H de cada fila, me copiase de las columnas B hasta la G en otras hojas (CAP1, CAP2, CAP3 y CAP4) a partir de la fila 15, en las columnas B a G.

El proceso se repetiría en la fila siguiente 101 de la hoja "GENERAL" y los datos copiados en las otras hojas se fuesen incrementando en la siguiente fila 16 y así sucesivamente hasta que no hubiese datos en la columna B de la hoja "GENERAL" para copiar.

1 Respuesta

Respuesta
1

Supongo que si hay determinado valor en la columna H se copia a la Cap1 o Cap2 o Cap3 o Cap4.

Pero no pusiste cuál ese valor, podrías poner ejemplos para cuando se debe copiar a Cap1, cap2, cap3 y cap4

Te anexo la macro, cambia "a", "b", "c","d" por los valores para cada hoja.

Sub CopiarColumnas()
'Por.Dante Amor
    Set h1 = Sheets("GENERAL")
    For i = 100 To h1.Range("H" & Rows.Count).End(xlUp).Row
        Select Case h1.Cells(i, "H")
            Case "a": h = "CAP1"
            Case "b": h = "CAP2"
            Case "c": h = "CAP3"
            Case "d": h = "CAP4"
            Case Else: h = ""
        End Select
        If h <> "" Then
            Set h2 = Sheets(h)
            u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1
            If u < 15 Then u = 15
            h1.Range(h1.Cells(i, "B"), h1.Cells(i, "G")).Copy h2.Range("B" & u)
        End If
    Next
    MsgBox "Terminado"
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

He sustituido los valores “a” por “210”, el “b” por 315”, el “c” por “DIP” y el “d” por “PID”, la macro funciona, pero solo copia si se da el primer caso, rellena correctamente la hoja CAP1, no copia en las otras hojas.
Una vez que se solventase esto, tendría que incluir que antes de rellenar las hojas borrase los datos de las rangos de las hojas para no duplicar los mismos, ya que cada vez que se ejecuta la macro los vuelve a incluir.
Gracias

Puedes poner una imagen de cómo tienes los datos de la hoja "GENERAL"

1. ¿Le modificaste algo más a la macro?

2. ¿Ejecutaste la macro con los datos de la imagen?

3. Estos datos: "212" y "RG / DIP" no los va a copia, ya que no están en el case:

        Select Case h1.Cells(i, "H")
            Case "210": h = "CAP1"
            Case "315": h = "CAP2"
            Case "DIP": h = "CAP3"
            Case "PID": h = "CAP4"
            Case Else: h = ""
        End Select

4. Revisa bien tus datos, debe decir "212" y no " 212 " o " 212" o "212 ", no debe haber espacios ni antes ni después del número.

5. ¿En la columna B siempre tienes datos?

No he modificado la macro salvo

Ejecutada la macro con los datos de la imagen

Revisados datos del case

Siempre hay datos en la columna "B" de hoja "GENERAL" para ejecutar la macro.

Si lo estimas conveniente podría pasarte el archivo por c.e.

Gracias por la atención.

Sí, envíame tu archivo con la macro, la macro funciona bien con mis datos y con tus datos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Agustin Prin Arton” y el título de esta pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas