Macros para copiar celdas llenas de un rango a otra hoja
Solo copie las celdas llenas de todo un rango de celdas y lo copie a otra hoja
1 respuesta
Son 2 rangos de columnas distintos : A40:A54 y 040:O54, solo deseo copiar las celdas llenas de esos rangos porque varia las celdas llenas y vacias; y deseo pegarlas a otra hoja en los empezando de los rangos A8 y B8 respectivamente.
H o l a: Fidel
Te paso la macro
Sub copiar() Set h1 = Sheets("Hoja1") Set h2 = Sheets("Hoja2") j = 8 For i = 40 To h1.Range("A" & Rows.Count).End(xlUp).Row h1.Range("A" & i & ":A" & i & ",O" & i & ":O" & i).Copy h2.Range("A" & j) j = j + 1 Next i MsgBox "fin" End Sub
Valora para finalizar! si es Excelente o bueno
Me salta error porque olvide mencionar que mi celda A es celda combinada y me salta error al ejecutar la macros
Me salta: esta acción no se puede realizar en una celda combinada.
Mi celda de la columna a son celdas combinadas
¿Dónde tienes la celda combinada en a hoja2?
¿Cómo tienes combinado A8 a B8 o de A8 a A9?
¿Por eso necesito ver la hoja puedes mostrar una imagen?
Si deseas envíame tu archivo: [email protected]
La tengo en la hoja 1 en la columna A, de A41 A K41 están combinadas así sucesivamente para abajo.
Porque la probé la macro en una hoja con celda sin combinar y si andaba bien
A41:A52 y 041:O52, solo deseo copiar las celdas llenas de esos rangos porque varia las celdas llenas y vacias; y deseo pegarlas a otra hoja en los empezando de los rangos A8 y B8 respectivamente, que lo copie sin formato porque los rangos destino tienen formato propio.
H o l a
Te paso la macro
Sub copiar() Set h1 = Sheets("Hoja1") Set h2 = Sheets("Hoja2") j = 8 t = 8 For i = 40 To h1.Range("A" & Rows.Count).End(xlUp).Row h1.Range("A" & i & ":K" & i).Copy: h2.Range("A" & t).PasteSpecial xlPasteValues t = t + 1 h1.Range("O" & i & ":O" & i).Copy: h2.Range("B" & j).PasteSpecial xlPasteValues j = j + 1 Next i MsgBox "fin" End Sub
Copia demasiado fuera del rango, solo debe copiar las que estén llenas y dentro del rango de A41:A52
h o l a
Cambia por esto
Sub copiar() Set h1 = Sheets("Hoja1") Set h2 = Sheets("Hoja2") j = 8 t = 8 h2.Range("A8:B23").ClearContents For i = 41 To h1.Range("A" & Rows.Count).End(xlUp).Row If i = 53 Then Exit For h1.Range("A" & i & ":K" & i).Copy: h2.Range("A" & t).PasteSpecial xlPasteValues t = t + 1 h1.Range("O" & i & ":O" & i).Copy: h2.Range("B" & j).PasteSpecial xlPasteValues j = j + 1 Next i MsgBox "fin" End Sub
en la hoja dos tambièn tienes celdas combinadas?
Me sirvió, pero aun me copia las celdas en blanco de la hoja 1, en si quiero que detecte y copia solo las celdas llenas del rango A41:A53; porque esos datos los aplico en fórmulas y no necesito los valores de celdas en blanco
Sub copiar() Set h1 = Sheets("Hoja1") Set h2 = Sheets("Hoja2") j = 8 t = 8 h2.Range("A8:B23").ClearContents For i = 41 To h1.Range("A" & Rows.Count).End(xlUp).Row If h1.Cells(i, "A") = "" Then Exit For h1.Range("A" & i & ":K" & i).Copy: h2.Range("A" & t).PasteSpecial xlPasteValues t = t + 1 h1.Range("O" & i & ":O" & i).Copy: h2.Range("B" & j).PasteSpecial xlPasteValues j = j + 1 Next i Application.CutCopyMode = False MsgBox "fin" End Sub
Gracias, con esa macros me copia solo las celda llenas como necesito; pero me copia más veces para las columnas laterales es decir: me copia en C,DE, E, F
h o l a:
ya hice la prueba en la hoja que me enviaste
Sub copiar() Set h1 = Sheets("Hoja1") Set h2 = Sheets("Hoja2") j = 8 t = 8 h2.Range("A8:B23").ClearContents For i = 41 To h1.Range("A" & Rows.Count).End(xlUp).Row If h1.Cells(i, "A") = "" Then Exit For h1.Range("A" & i & ":A" & i).Copy: h2.Range("A" & j).PasteSpecial xlPasteValues t = t + 1 h1.Range("O" & i & ":O" & i).Copy: h2.Range("B" & j).PasteSpecial xlPasteValues j = j + 1 Next i Application.CutCopyMode = True h2.Select MsgBox "fin" End Sub
Me comentas
- Compartir respuesta