Macro para Pasar Datos Horizantales a Verticales Excel 2013

Tengo un tabla en Excel, donde se ingresaron fechas de solicitud de vacaciones, fecha inicio y fecha final, sin embargo se dejaron espacios (columnas) entre solicitudes y algunas otras están seguidas, o sin espacios.

lo que necesito es pasar esos mismos datos a una tabla en forma vertical, por cada solicitud se repite el nombre y coloco la fecha.

Lo que me gustaría es hacerla que una macro copie los datos (Transponer), ignorando los espacios en blanco y a la vez insertando una fila por cada solicitud de copie, pero deben copiarse de dos en dos que seria "Fecha Inicio" y " "Fecha Final".

2 respuestas

Respuesta
1

H o l a:

Para hacer la macro necesito estos datos:

  1. Cómo se llama la hoja donde tienes los datos
  2. En cuál columna están los nombre
  3. En cuál fila empiezan los nombres
  4. En cuál columna empiezan las fechas
  5. Cómo se llama la hoja para poner los resultados
  6. En cuál columna empezar a poner los resultados
  7. En cuál fila empezar a poner los resultados

E spero tus comentarios en ese orden.

Que Tal Dante, gracias por la respuesta, el nombre del archivo donde están los datos es VACACIONES, los nombres están la columna A y empiezan por la fila 4, las fechas empiezan en la columna C, la hoja para poner los resultados puede ser la hoja 2 en el mismo archivo, los nombre pueden ir en la columna A y las fechas en la columna B y C, a partir de la fila 2.

Gracias por tu apoyo.

H o l a:

Te anexo la macro. No pusiste el nombre de la hoja con los datos, supongo que es la "Hoja1"; en la "Hoja2" te pondrá los resultados.

Sub TransponerFechas()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.UsedRange.Offset(1, 0).ClearContents
    '
    f = 2
    For i = 4 To h1.Range("A" & Rows.Count).End(xlUp).Row
        existe = False
        For j = 3 To h1.Cells(i, Columns.Count).End(xlToLeft).Column Step 2
            If h1.Cells(i, j) <> "" Then
                h2.Cells(f, "A") = h1.Cells(i, "A")
                h2.Cells(f, "B") = h1.Cells(i, j)
                h2.Cells(f, "C") = h1.Cells(i, j + 1)
                f = f + 1
                existe = True
            End If
        Next
        If existe Then f = f + 1
    Next
    MsgBox "Terminado"
End Sub

Respuesta
1

Acá tienes un ejemplo para trasponer datos, debes adaptar a lo que precisas

http://www.programarexcel.com/2014/08/como-trasponer-celdas-con-macro.html 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas