Copiar un rango si cumple condición en un bucle

[email protected]
Necesito el código de una macro que haga lo siguiente:En hoja hace un bucle que recorra la columna D desde fila 1 a 12500, y si el valor de celda es igual a 1, copie las celdas que se encuentran en la columna A de otra hoja llamada hoja 2 ( no hay celdas vacias entre filas y los valores de esta columna pueden terminar en la fila 100, es decir, a100, aunque no necesariamente pueden llegar los valores hasta a100) y las pegue dos fila por debajo del valor 1 y dos columna hacia la izquierda (columna C de la hoja1) . Una vez cumplida esta orden debe continuar el bucle hasta acabarlo (fila 12500). En resume, se trata de copiar varias celdas de otra hoja si al recorrer un bucle cumple una condición.

2 Respuestas

Respuesta
1

Prueba esta macro

Sub copiar()
Set h1 = Worksheets("hoja1")
Set h2 = Worksheets("hoja2")
Set origen = h1.range("d1").CurrentRegion
Set datos = h2.range("a1").CurrentRegion
With origen
    r = .Rows.Count
    For i = 1 To r
        valida = .Cells(i, 1) = 1
        If valida Then origen.Cells(i + 2, 0).Value = datos.Cells(i, 1).Value
        Next i
End With
Set h1 = Nothing: Set h2 = Nothing: Set origen = Nothing: Set datos = Nothing
End Sub

Muchas gracias pero junto a columna a existen otros datos por lo que no puedo emplear el comando currentregion.

Entonces no comprendes del todo la opción set combinada con currentregion, combinando ambas te crean una matriz de nfilas por n columnas de las cuales por coordenadas eliges que datos usar en el caso de la macro que te envíe si te fijas datos. Cells(i, 1) te copiara los datos solo de la fila que vaya recorriendo que estén en la columna 1, el resto de los datos de las demás columnas no los tomara en cuenta ni los copiara, pon una imagen de lo que quieres y como lo quieres para ajustar la macro.

Respuesta
1

Paco: Esta pregunta me sale sugerida y supongo que es porque está un poco desubicada.

En Excel hay especialistas magníficos y seguro obtendrás una respuesta adecuada. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas