Truco Excel. Pasar un rango de varias columnas a una

Macro de Excel que nos permite pasar de varias columnas a una sola. De momento no es una función, es un código que sorprende por su sencillez:

Sub rango_columnas()

Dim rango As Variant
Dim i As Long, j As Long, k As Long
Dim col As Long

rango = Selection.Value

'Esta es la parte que permite ubicar la salida
col = Selection.Column
k = Selection.Row

'Esto recorre el rango y realiza la trasposición
For i = 1 To UBound(rango, 1)
    For j = 1 To UBound(rango, 2)
        Cells(k, col + UBound(rango, 2)).Value = rango(i, j)
        k = k + 1
    Next
Next

End Sub

Este código lo ponéis tal cual en vuestro Excel y os ilustro a continuación sobre su funcionamiento. Lo primero es seleccionar el rango de columnas que deseamos transponer:

varias_columnas_a_una_excel1

Ahora sólo ejecutamos la macro rango_columnas:

varias_columnas_a_una_excel2

Y aparece justo al lado del rango que deseamos transponer a una sola columna:

varias_columnas_a_una_excel3

En este caso el resultado lo obtenemos en la columna F. Jugando con los índices i y j de nuestra macro podremos modificar la forma de la transposición. Me parece una macro útil y por eso lo comparto con vosotros. Saludos.

10 Responses to “Truco Excel. Pasar un rango de varias columnas a una”

  1. […] al blog en los próximos días, en realidad esta entrada y la siguiente son modificaciones de un anterior truco Excel que subí al blog. En esta imagen podéis ver lo que […]

  2. andres dice:

    La verdad es que el código funciona de maravilla… muchas gracias por el aporte…

  3. SARAI dice:

    ¡Excelente! Me salvaste, acababa de organizar unas combinaciones con 11.675 celdas y necesitaba convertirlas a una sola columna para subir las palabras clave de una campaña de Google Adwords. Igualmente estoy asombrada no solamente por lo sencillo del código (16 líneas incluyendo comentarios) sino también por la rapidez en generar el resultado (quedé así como “¿OMG ya terminó?”). Nuevamente, ¡muchas gracias!

  4. Mayco dice:

    Te amo me solucionaste un problemon!

  5. Ruben dice:

    Funciona de Maravilla la Macro, pero tengo otro caso…. donde las columnas son de diferente tamaño de información…y al efectuar la Macro me deja espacios Vacios… Me podrias ayudar para que no contemplara esos espacios…. te lo agradecere mucho

    • Stefa Winz dice:

      Sub unir_columnas()
      ‘Por.DAM
      ci = Columns(“C”).Column ‘columna inicial a unir
      cf = Columns(“O”).Column ‘columna final a unir
      cd = Columns(“Z”).Column ‘columna unión
      f = 1 ‘fila inicial de datos
      For i = ci To cf
      uf = Cells(Rows.Count, i).End(xlUp).Row
      ud = Cells(Rows.Count, cd).End(xlUp).Row + 1
      Range(Cells(f, i), Cells(uf, i)).Copy Cells(ud, cd)
      Next
      End Sub

  6. Helber dice:

    Brother!! Excelente código, muchas gracias…!!!

  7. Inés dice:

    Muchas gracias! Me ha ahorrado muchísimo tiempo, necesitaba exactamente esta macro. Gracias!!!

  8. giorgia dice:

    Hola, no entiendo mucho de esto… quiero hacer lo mismo pero solo tengo 2 columnas y quiero que ambas esten en una sola. El codigo cómo cambia?

  9. Jordi dice:

    Lo puto amo. A tus pies.

Leave a Reply