Inversión de columna VBA

Resuelto
texastina Mensajes publicados 55 Estado Miembro -  
texastina Mensajes publicados 55 Estado Miembro -
Hola,

Quisiera saber si es posible invertir el contenido de varias columnas gracias al VBA.
Ej: Columna D ==> Columna B
Columna B ==> Columna C
Columna C ==> Columna D

Espero haber sido lo suficientemente clara :)

Gracias por tus respuestas :)

4 respuestas

Maurice
 
Hola
Yo prefiero mover la columna
ejemplo:
 Sub DeplaceCol() Columns(4).Cut Columns(2).Insert Shift:=xlToRight Range("A1").Select End Sub 

A+
Maurice
2
texastina Mensajes publicados 55 Estado Miembro
 
Gracias por tu respuesta, las he reproducido y funciona :)
Elijo tu método, lo encuentro más simple

Gracias a ustedes, ¡buen día! :)
0
JvDo Mensajes publicados 1924 Fecha de registro   Estado Miembro Última intervención   859
 
Hola,

Sí, es posible. Incluso puedes limitarte al primer desplazamiento: columna D frente a columna B.
Las otras columnas estarán automáticamente en el lugar correcto.

Si además de tu pregunta quieres saber cómo hacerlo, utiliza el grabador de macros y tendrás el código.

Saludos cordiales
1
diablo13800 Mensajes publicados 3469 Fecha de registro   Estado Miembro Última intervención   1 872
 
Hola,

Sí, eso es posible gracias a la secuencia de comandos copiar y pegar.

En tu caso:
dim ejemplo as Range // Declaración de tu campo de acción ejemplo = Range("A1;E600") // Selección de un rango amplio, a adaptar según la longitud de tus columnas. ejemplo.Column(4).select // Selecciona la columna D Selection.copy // Copia la columna seleccionada ejemplo.Column(5).select // Selecciona la columna E ActiveSheet.Paste // Pega lo que se ha copiado en la columna seleccionada


Espero haber sido lo suficientemente claro, a hacerlo según tu deseo :)
Manténme informado si hay algo que no entiendes.
0
texastina Mensajes publicados 55 Estado Miembro
 
Gracias por tu respuesta :)
¡Has sido clara, he entendido y lo he reproducido en mi tabla!

Después también he reproducido el método de Maurice y lo encuentro más sencillo :)
0
michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
 
Hola
intenta:

Opción Explícita
'------------------
Sub bcd_cdb()
Dim Derlig As Integer, T_in, T_out, cptr As Integer

Application.ScreenUpdating = False
Derlig = Cells.Find(what:="*", searchdirection:=xlPrevious).Row
T_in = Range("B1:D" & Derlig)
ReDim T_out(1 To Derlig, 1 To 3)
For cptr = 1 To UBound(T_in)
T_out(cptr, 1) = T_in(cptr, 3) '
T_out(cptr, 2) = T_in(cptr, 1) '
T_out(cptr, 3) = T_in(cptr, 2) '
Next
Range("B1").Resize(UBound(T_in), 3) = T_out

End Sub


--
Michel
0
texastina Mensajes publicados 55 Estado Miembro
 
Hola Mchel
Gracias por tu respuesta, eso también funciona :)
0