Descargar el ejemplo
Usualmente en Excel no se trabaja en términos de columnas. La mayoría de las plantilllas se elaboran pensando en ampliar el rango de datos en términos de filas. Comparto decididamente esta premisa, especialmente porque una hoja tiene más filas que columnas, exactamante 1048576 filas * 16384 columnas (Office 2013). Pero cuando es inevitable ampliar nuestro número de columnas, nada mejor que hacerlo automáticamente mediante un código de VBA.
Usualmente en Excel no se trabaja en términos de columnas. La mayoría de las plantilllas se elaboran pensando en ampliar el rango de datos en términos de filas. Comparto decididamente esta premisa, especialmente porque una hoja tiene más filas que columnas, exactamante 1048576 filas * 16384 columnas (Office 2013). Pero cuando es inevitable ampliar nuestro número de columnas, nada mejor que hacerlo automáticamente mediante un código de VBA.
En el presente ejemplo se pretende copiar
la última columna con datos y pegarla en una columna subsiguiente para ir
ampliando el rango paulatinamente. En el modelo de datos que se presenta, se copió la columna J y se pegó en la columna K.
Quiero
agradecer al experto "GREGORI00001" de todoexpertos, quien desinteresadamente me
dio una mano para terminar el código que implemente en otra plantilla y que da
vida a la presente nota.
Aquí el modelo de datos:
Aquí el modelo de datos:
El código es el siguiente:
Sub
copiar()
Dim
Col As Integer
Col
= ActiveSheet.Range("XFD1").End(xlToLeft).Column
ActiveCell.Offset(0,
-1).Select
Selection.EntireColumn.Insert
ActiveCell.Offset(0,
-1).Select
ActiveCell.EntireColumn.Select
Selection.Copy
ActiveCell.Offset(0,
1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(2, 0).Select
End
Sub
Explicando
paso a paso:
1. Col =
ActiveSheet.Range("XFD1").End(xlToLeft).Column, recorre la fila uno
desde la última columna
hasta la primera columna donde encuentre dato.
2. ActiveCell.Offset(0, -1).Select, se posiciona una columna hacia la
izquierda respecto de la primera columna con dato que encuentra.
3. Selection.EntireColumn.Insert, Inserta
una columna en columna activa.
4. ActiveCell.Offset(0, -1).Select, se
posiciona
una columna hacia la izquierda respecto de la columna insertada, que es la
columna con datos que requiero copiar.
5. ActiveCell.EntireColumn.Select
Selection.Copy
Selecciona y copia la columna activa.
6. ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Se posiciona una columna hacia la derecha
respecto de la posición de la columna copiada y, deshabilita el modo copiar.
7.
ActiveCell.Offset(2, 0).Select
Finalmente, se posiciona dos filas debajo de
la fila activa.
No hay comentarios.:
Publicar un comentario