Aprende a pasar datos de varias columnas a una sola columna o varias filas en una sola columna con macros, parecido a la herramienta pegado especial transponer el cual nos permitir谩 copiar varias filas y pegar en una sola columna en excel.
Revisa el siguiente video para que aprendas a utilizar la macro y en la parte inferior del articulo se encuentra el enlace para que la puedas descargar
Despu茅s de que tengamos habilitado las macros debemos de insertar un bot贸n.






Luego nos aparece el siguiente recuadro donde debemos de seleccionar la celda donde deseas transponer la informaci贸n ejemplo la celda C3, para seguir con el ejercicio vamos a seleccionar la celda B6

Luego posteriormente despues de presionar aceptar el ejercicio es transponer la matriz de 3 x3 es decir tres filas y tres columnas en una sola columna

El resultado ser铆a el siguiente

Se nombra las siguientes variables enteros
Dim InicioFila, LimiteFila, InicioColumna, LimiteColumna, fila As Integer
Se nombra las siguiente variables como texto
Dim InicioColumnaLetra, LimiteColumnaLetra, LetraCelda As String
Se nombra las siguientes Variables como rango
Dim rango, celda As Range
Se abre la caja de texto para seleccionar el rango, el Tipo=8 hace referencia a rango.
Set rango = Application.InputBox("Selecciona el rango a procesar:" & vbLf & "Ejemplo: A1:C3", Type:=8)
Si no se selecciona ningun rango salga de la macro
Canal de YouTube
¿COMO PASAR DATOS CON FILAS EN UNA COLUMNA EN EXCEL CON MACROS?
Con esta macro nos va permitir realizar lo siguiente:
- Tomar todos los datos que tenemos en las filas y trasponerlos en una sola columna
Revisa el siguiente video para que aprendas a utilizar la macro y en la parte inferior del articulo se encuentra el enlace para que la puedas descargar
Importante que para utilizar la macro debemos de tener habilitados el men煤 de programador o desarrollador dependiendo de la versi贸n de excel que tengas. En este CORTO VIDEO te explico como lo puedes HABILITAR
Es muy importante tener las filas que vamos a transponer de una manera uniforme, es decir que todas las filas tengan el mismo n煤mero de columnas como se muestra en la imagen
Tenemos un primer ejercicio de filas de 3 x 3 es decir tres filas y 3 columnas y el segundo ejercicio es un matriz de 8 x 4, es decir de 8 columnas y 4 filas.
Entonces presionamos clic en el icono de insertar y posteriormente al icono de bot贸n


y arrastramos con el mouse el tama帽o como queremos el bot贸n.
Luego cambiamos el nombre de la macro y le ponemos para el ejemplo Transponer y posteriormente nos vamos para el boton de nuevo
Luego copiamos la macro que se encuentra al final de esta pagina.
En el momento de ejecutar la macro te sale un primer cuadro donde debemos de seleccionar el rango a procesar y para el ejemplo seleccionamos el rango A2 hasta C4
Luego nos aparece el siguiente recuadro donde debemos de seleccionar la celda donde deseas transponer la informaci贸n ejemplo la celda C3, para seguir con el ejercicio vamos a seleccionar la celda B6
Luego posteriormente despues de presionar aceptar el ejercicio es transponer la matriz de 3 x3 es decir tres filas y tres columnas en una sola columna
El resultado ser铆a el siguiente
La macro consiste en lo siguiente.
Dim InicioFila, LimiteFila, InicioColumna, LimiteColumna, fila As Integer
Se nombra las siguiente variables como texto
Dim InicioColumnaLetra, LimiteColumnaLetra, LetraCelda As String
Se nombra las siguientes Variables como rango
Dim rango, celda As Range
Se abre la caja de texto para seleccionar el rango, el Tipo=8 hace referencia a rango.
Set rango = Application.InputBox("Selecciona el rango a procesar:" & vbLf & "Ejemplo: A1:C3", Type:=8)
Si no se selecciona ningun rango salga de la macro
If rango Is Nothing Then Exit Sub
Coloca el numero de la fila donde comienza el rango
InicioFila = rango.Row
LimiteFila = rango.Row + rango.Rows.Count - 1 ' #Fila inicial+#filas del rango - 1
Coloca el numero de la fila donde comienza el rango
InicioFila = rango.Row
LimiteFila = rango.Row + rango.Rows.Count - 1 ' #Fila inicial+#filas del rango - 1
Coloca el numero de la columna donde comienza el rango
InicioColumna = rango.Column
LimiteColumna = rango.Column + rango.Columns.Count - 1 '#Columna inicial+#Columnas del rango - 1
'Utilizamos la funcion sustituir y la funci贸n direcci贸n =SUSTITUIR(DIRECCION(1;2;4);1;"") Esta funci贸n nos permite obtener la letra de la columna
Range("AZ1").Formula = "=SUBSTITUTE(ADDRESS(1," & InicioColumna & ",4),1,"""")"
la variable es igual al resultado de la funci贸n
InicioColumnaLetra = Range("AZ1")
Range("AZ1").Formula = "=SUBSTITUTE(ADDRESS(1," & LimiteColumna & ",4),1,"""")"
LimiteColumnaLetra = Range("AZ1")
Range("AZ1").Clear
Se abre la caja de texto para seleccionar la celda para copiar, el Tipo=8 hace referencia a rango.
Set celda = Application.InputBox("Selecciona la celda donde deseas transponer la informacion:" & vbLf & "Ejemplo: C3", Type:=8)
Si no se selecciona la celda se sale de la macro
If celda Is Nothing Then Exit Sub
Para obtener la fila de la celda donde comienza pegar
fila = celda.Row
InicioColumna = rango.Column
LimiteColumna = rango.Column + rango.Columns.Count - 1 '#Columna inicial+#Columnas del rango - 1
'Utilizamos la funcion sustituir y la funci贸n direcci贸n =SUSTITUIR(DIRECCION(1;2;4);1;"") Esta funci贸n nos permite obtener la letra de la columna
Range("AZ1").Formula = "=SUBSTITUTE(ADDRESS(1," & InicioColumna & ",4),1,"""")"
la variable es igual al resultado de la funci贸n
InicioColumnaLetra = Range("AZ1")
Range("AZ1").Formula = "=SUBSTITUTE(ADDRESS(1," & LimiteColumna & ",4),1,"""")"
LimiteColumnaLetra = Range("AZ1")
Range("AZ1").Clear
Se abre la caja de texto para seleccionar la celda para copiar, el Tipo=8 hace referencia a rango.
Set celda = Application.InputBox("Selecciona la celda donde deseas transponer la informacion:" & vbLf & "Ejemplo: C3", Type:=8)
Si no se selecciona la celda se sale de la macro
If celda Is Nothing Then Exit Sub
Para obtener la fila de la celda donde comienza pegar
fila = celda.Row
Coloca el numero de la columna donde comienza la celda para pegar
InicioCelda = celda.Column
Para obtener la letra de la columna de la celda donde comenzara a copiar.
Range("AZ1").Formula = "=SUBSTITUTE(ADDRESS(1," & InicioCelda & ",4),1,"""")"
LetraCelda = Range("AZ1")
Range("AZ1").Clear
Se utiliza el ciclo For hasta que llegue la ultima fila
For InicioFila = InicioFila To LimiteFila Step 1
Range(InicioColumnaLetra & InicioFila & ":" & LimiteColumnaLetra & InicioFila).Copy 'Copia la fila
Pegado especial tranponer
Range(LetraCelda & fila).PasteSpecial , Transpose:=True
Incremente la fila donde comenzara de nuevo a copiar
fila = fila + (LimiteColumna - InicioColumna + 1)
Next
Para obtener la letra de la columna de la celda donde comenzara a copiar.
Range("AZ1").Formula = "=SUBSTITUTE(ADDRESS(1," & InicioCelda & ",4),1,"""")"
LetraCelda = Range("AZ1")
Range("AZ1").Clear
Se utiliza el ciclo For hasta que llegue la ultima fila
For InicioFila = InicioFila To LimiteFila Step 1
Range(InicioColumnaLetra & InicioFila & ":" & LimiteColumnaLetra & InicioFila).Copy 'Copia la fila
Pegado especial tranponer
Range(LetraCelda & fila).PasteSpecial , Transpose:=True
Incremente la fila donde comenzara de nuevo a copiar
fila = fila + (LimiteColumna - InicioColumna + 1)
Next
Seguramente quieres sabes m谩s acerca de Excel, no te olvides darte una vuelta por las siguientes secciones disponibles para ti de manera gratuita
Canal de YouTube
Comunidad Telegram
Instagram: Aprende y Ense帽a Excel
Facebook: Aprende Excel F谩cil
Twitter: Aprende y Ense帽a Excel
Hasta una pr贸xima y te deseo el mayor de los EXITOS.
Aprende y Ense帽a Excel.