Macro copiar celdas con un factor común de manera secuencial

Tengo dos columnas en excel con un gran número de datos. En la primera columna se encuentra la referencia de varias encuestas E1, E2, E3... E9100. En la segunda columna se encuentran las respuestas de cada encuesta (estas respuestas ocupan entre 160 y 210filas)

COL_A   COL_B

E1           Oscar

E1           Ramirez

E1           Medellín

E2          Felipe

Necesito una macro que me permita copiar los datos de las respuestas que están asociadas con cada encuesta y transponerlas. De tal modo que me las presente así:

COL_A  COL_B     COL_C       COL_D

E1          Oscar      Ramirez    Medellín

E2          Felipe   (...)

Dado que son tantas encuestas necesito que la macro revise las columnas y que me copie lo que está asociado con la E1 y cambie a la fila siguiente cuando ya no encuentre la E1 sino la E2 o E3 o E n.

1 respuesta

Respuesta
1

 H o l a:

Te anexo la macro. Cambia en la macro "Hoja1" por el nombre de tu hoja donde están tus datos. Crea una hoja con el nombre "Hoja2", en esta última hoja quedarán los resultados.

La macro supone que los datos empiezan en la fila 1 y que no tiene encabezados.

Sub CopiarCeldas()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Cells.Clear
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    With h1.Sort
     .SortFields.Clear: .SortFields.Add Key:=h1.Range("A1:A" & u)
     .SetRange h1.Range("A1:B" & u): .Header = xlGuess: .Apply
    End With
    '
    j = 1
    k = 2
    ant = h1.Cells(1, "A")
    h2.Cells(1, "A") = ant
    For i = 1 To u
        If ant <> h1.Cells(i, "A") Then
            j = j + 1
            k = 2
            h2.Cells(j, "A") = h1.Cells(i, "A")
        End If
        h2.Cells(j, k) = h1.Cells(i, "B")
        k = k + 1
        ant = h1.Cells(i, "A")
    Next
    h2.Select
    MsgBox "Proceso terminado"
End Sub

Hola Dante

Muchas gracias por tu pronta respuesta.

Excel me saca un error

Se ha producido el error "424" en tiempo de ejecución:

Se requiere un objeto

Me da la opción depurar

y Visual Basic resalta la siguiente linea de la Macro

u = h1.Range("A" & Rows.Count).End(xlUp).Row

Qué puedo hacer?

¿Modificaste la macro?

¿Qué cambios le hiciste?

Solo cambie el nombre de la hoja1 a Encuestas

Puedo enviarte el archivo?

Te debe quedar así:

Set h1 = Sheets("Encuestas")

Revisa que esté entre comillas la palabra "Encuestas"

¿Qué versión de excel tienes?

Si continúa el problema envíame el archivo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Paulina Aguirre Arias” y el título de esta pregunta.

¡Mil Gracias! 

Ya lo solucioné y todo gracias a ti. Envíe la pregunta referenciandote porque me he dado cuenta que atiendes a nuestras inquietudes con mucho gusto, de manera rápida y acertada.

Eres un experto!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas