¿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.