Anuncios

lunes, 11 de marzo de 2019

😱👉 Como TRANSPONER o PASAR DATOS con varias FILAS en una sola COLUMNA en Excel - MACROS

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.

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


Después de que tengamos habilitado las macros debemos de insertar un botón.


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.

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

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

En el siguiente ENLACE puedes DESCARGAR la macro para combinaciones con repetición.


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

Hasta una próxima y te deseo el mayor de los EXITOS.

Aprende y Enseña Excel.