Hola, me gustaría intercalar cuatro columnas en una hoja Excel usando macros.
A1 B1 C1 D1 E1 1 2 3 4 1 5 6 7 8 2
9 10 11 12 3 4 5 6 7 ... No sé si influye pero en las columnas A1, B1, C1 y D1 podrían ser largas. Agradezco por adelantado a cualquier persona que pudiera ayudarme.
1 respuesta
Respuesta de Nelson Felipe Serrano
1
1
Nelson Felipe Serrano, Ingeniero civil con habilidades en el manejo de las funciones y...
Te dejo el código que te puede ayudar a solucionar tu problema Al respecto te digo que debes iniciarla, luego de tener seleccionada la matriz que quieres procesar. Quedo pendiente de tu éxito. Saludos No olvides finalizar y puntuar la pregunta ******* Sub TransponerEnUnaColumna() ''Creada por FSerrano en 120120 para Javier_24 en TodoExpertos.com ''Copia todos los valores de la matriz seleccionada en una sola columna ''a la derecha de la matriz seleccionada, y elimina las celdas vacías 'Captura la dirección de la matriz a procesar inicio = Mid(Selection.Address, 1, InStr(1, Selection.Address, ":") - 1) fin = Application.WorksheetFunction.Substitute(Selection.Address, inicio & ":", "") 'Determina el numero de filas y columnas de la matriz a procesar filas = Selection.Rows.Count columnas = Selection.Columns.Count 'inserta una columna a la derecha, donde se pegaran los valores Cells(ActiveCell.Row, Range(fin).Column + 1).EntireColumn.Insert 'Realiza la copia de cada fila a la columna insertada, transponiendo sus valores For i = 0 To filas - 1 Range(Cells(Range(inicio).Row + i, Range(inicio). Column).Address & ":" & Cells(Range(inicio).Row + i, Range(fin). Column). Address). Copy Cells(Range(inicio).Row - 1 + i * columnas + 1, Range(fin).Column + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=True, Transpose:=True Next 'Elimina las celdas vacías Range(Cells(Range(inicio).Row, Range(fin).Column + 1).Address & ":" & Cells(Range(inicio).Row + filas * columnas, Range(fin).Column + 1).Address).SpecialCells(xlCellTypeBlanks).Delete (xlUp) 'Vuelve a la posición inicial Range(inicio).Activate End Sub