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
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 SubValora 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 Suben 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 SubMe comentas
- Compartir respuesta


