Macro para convertir un Rango que los encabezados están distintas filas, así como los datos, para ponerlos en una sola fila.

Tengo estos posibles datos, porgo dos ejemplos de datos, pero la disposición de ellos puede ser variable, como podéis ver en los dos ejemplos pueden ser distintos. Los datos salen de la siguiente manera los encabezados en dos, tres o cuatro filas (tampoco se sabe su numero de columnas y su posición)y sus datos correspondientes salen en grupos de filas (grupos de dos, tres, cuatro filas) en la misma disposición que los encabezados.

Ejemplo1

EJEMPLO 1 DE DATOS INICIALES

Necesito una macro que me deje los encabezados en una sola fila, y sus datos correspondientes (cada grupo) en una sola fila, y tantas filas como grupos existan, como podéis ver:

Para los datos 1

Para el ejemplo 2

NOTA: Aunque en el Rango de datos iniciales son de 6 columnas estos pueden variar, pueden tener y de echo tienen un numero indeterminado de columnas.

1 respuesta

Respuesta

Pon al final de la primera columna la palabra "Final" para que cuando la encuentre la macro ahí se detenga.

Luego agrega este código a un botón

Private Sub transformar_Click()

Range("c1").Select
Do While ActiveCell.Value <> "Final"

If ActiveCell.Value = "fecha inicial" Or IsDate(ActiveCell.Value) Then
ActiveCell.Offset(0, 6).Value = ActiveCell.Offset(1, 0).Value
ActiveCell.Offset(0, 7).Value = ActiveCell.Offset(1, 3).Value
ActiveCell.Offset(0, 8).Value = ActiveCell.Offset(1, 4).Value
ActiveCell.Offset(0, 9).Value = ActiveCell.Offset(1, 6).Value
ActiveCell.Offset(1, 0).EntireRow.Delete
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub

Ojo estoy partiendo la ubicación donde tienes tus columnas. Si agregas o insertas columnas debes de cambiar las referencias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas