Dudas sobre el uso de macros para copiar valores de las columnas en un rango en Microsoft Excel

Hola Valedor, hace unos días te pregunte como podía hacer una macro para copiar solo las celdas que contengan texto del rango A1:A20 y me colocara el resultado en el rango A30:A50 ordenados uno debajo de otro, sin que me copie las celdas vacías, teniendo en cuenta que el rango de la columna A son celdas vinculadas (osea que las celdas vacías tienen asignada una fórmula que las vincula desde otras hojas y solo se rellenan si hay algún dato que consignar y me respondiste con la siguiente macro.
Sub Macro2()
Range("A1:A20").Select
Selection.SpecialCells(xlCellTypeFormulas, 2).Select
Selection.Copy
Range("A30").Select
ActiveSheet.Paste
End Sub
La cual funciona perfectamente, pero lo que necesito ahora es que me copie además de los rangos mencionados los dos rangos de las columnas situadas a la derecha (B1:B20 y C1:C20)pero en este caso son números que también tienen incluida una fórmula que las vincula desde otras celdas, y las pegue en el rango B30 y C30 respectivamente, he leído mucho e intentado aplicar lo que he podido sobre SpecialCells y xlCellTypeFormulas, xlCellTypeNumbers, y otros argumentos para poder aplicarlos por tratarse de números pero no soy capaz de conseguirlo, te agradecería que me ayudaras, espero haberme explicado bien...

1 respuesta

Respuesta
1
El código es el mismo, el secreto esta en la selección especial, en este caso, tu quieres seleccionar solo números de las fórmulas, la macro quedaría así...
Sub Macro3()
Range("B1:B20").Select
Selection.SpecialCells(xlCellTypeFormulas, 1).SelectSelection.Copy
Range("B30").Select
ActiveSheet.Paste
End Sub
La macro que copie de la columna C te queda de tarea, esta regalado...
He probado la macro y me da error "438" (el objeto no admite esta propiedad o método...
¿A qué se puede deber ese error?, ¿Me podías explicar que misión tiene el número 1 en la linea:
Selection.SpecialCells(xlCellTypeFormulas,1).SelectSelection.Copy?
Y he conseguido que me funcione, el error era mío y ya está solucionado, pero si me puedes contestar a la esta pregunta te lo agradecería...
¿Me podías explicar que misión tiene el número 1 en la linea:
Selection.SpecialCells(xlCellTypeFormulas,1).SelectSelection.Copy?
Persona por no aclararme...
Lo único que me hace es que me pega la selección donde yo necesito pero no me elimina los huecos en blanco...
Esta explicación viene en la ayuda...
Con esta linea estamos seleccionando las celdas que tengas fórmulas cuyo resultado sea un numero
Selection. SpecialCells(xlCellTypeFormulas, 1).Select
es lo mismo que esta linea
Selection.SpecialCells(xlCellTypeFormulas, xlNumbers).Select
o sea xlNumbers = 1 y esta es una constante de VBA
para los restantes tipos es
xlErrors = 16 para errores
xlLogical = 4 para valores logicos
xlTextValues = 2 para texto
Respecto a tu segunda pregunta, cierto, la macro solo copia, te falta, si así lo quieres eliminar las celdas, graba estas acciones ve el código, consulta la ayuda y ya lo tienes, te anexo una forma de hacerlo, tu tarea es adaptarlo a tus necesidades...
Public Sub CopiarEliminar()
Range("A1:A20").Select
Selection.SpecialCells(xlCellTypeFormulas, 2).Select
Selection.Copy
Range("A30").Select
ActiveSheet.Paste
Range("A1:A20").Select
Selection.SpecialCells(xlCellTypeFormulas, 2).Select
Selection.EntireRow.Delete
Range("A1").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas