Inversión de columna VBA

Resuelto
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

  1. 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
    1. 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
  2. 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
    1. 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
      1. 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
    2. Colaborador
      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
      1. Hola Mchel
        Gracias por tu respuesta, eso también funciona :)
        0