Quiero ordenar datos de varias columnas en excel con macros

Dante Amor

Tengo una documento de excel con varias hojas.

En la primera tengo un albarán, en el cual en la columna A, a partir de la celda 22 introduzco IDs de operarios, una vez introducidos el ID en la columna B, a partir de la celda 22 aparece automáticamente el nombre del operario (tengo una fórmula para que haga esta función), en las siguiente columnas E, F, G, H, I, J introduzco las horas que realizan cada operario.

El problema que tengo es:

He creado un botón de ORDENAR y la siguiente macro en un módulo

Sub ordenar()
Set h1 = Sheets("ALBARAN")
With h1.Sort
.SortFields.Clear: .SortFields.Add Key:=Range("B22:B48")
.SetRange Range("A22:J48"): .Header = xlYes: .Apply
End With

End Sub

Esta macro la he asignado al botón ORDENAR.

La función la hace, pero mi problema es que yo introduzco los datos en las celdas A23, A24, A25 por ejemplo y le doy a ordenar y estas si se ordenan alfabéticamente. Pero lo hacen en las celdas finales A46, A47, A48. Dejando todas las primeras blancas.

El rango de celdas a ordenar es A23, A48 (en la celda A23 tengo encabezado)

1 respuesta

Respuesta
2

Ya no entendí dónde tienes los encabezados. Pero no es problema, solamente actualiza en la macro en esta línea, cambia el 21 por el número de fila donde tienes tus encabezados.

f_enc = 21

La macro actualizada

Sub ordenar()
'Por.Dante Amor
    f_enc = 21
    Set h1 = Sheets("ALBARAN")
    u = f_enc + 1
    Do While Cells(u, "A") <> ""
        u = u + 1
    Loop
    u = u - 1
    With h1.Sort
        .SortFields.Clear: .SortFields.Add Key:=Range("B" & f_enc + 1 & ":B" & u)
        .SetRange Range("A" & f_enc & ":J" & u): .Header = xlYes: .Apply
    End With
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

esa macro no me funciona nada... no hace ninguna acción.... 

no se si me estoy explicando bien en lo que necesito 

esta es mi hoja...

Introduzco el ID aparece automaticamente el nombre, después introduzco las horas.

Mi intención es al tener varios operarios introducidos, pulsar el botón ordenar, y que los operarios se ordenen todos alfabéticamente y con ello lleven todos los datos, el ID y las horas que han realizado

Pero en la imagen que pusiste no hay datos, por eso no hace "nada".

Debes capturar datos y después ejecutar la macro para ordenarlos.

O envíame tu archivo para revisar cómo tienes los datos y las fórmulas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “maria fermin

S a l u d o s . D a n t e   A m o r

Dante Amor 

he enviado un correo con el archivo de excel

¡Gracias! 

Anexo la macro

Sub ordenar()
'Por.Dante Amor
    f_enc = 22
    Set h1 = Sheets("ALBARAN")
    u = f_enc + 1
    Do While Cells(u, "A") <> ""
        u = u + 1
    Loop
    u = u - 1
    With h1.Sort
        .SortFields.Clear: .SortFields.Add Key:=Range("B" & f_enc + 1 & ":B" & u)
        .SetRange Range("A" & f_enc & ":J" & u): .Header = xlYes: .Apply
    End With
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas