Como ordenar la columna "A" alfabéticamente a partir de la fila #11, y que a su vez ordene hasta la "AT"

Poseo una hoja llamada "CALCULOS" en donde mis encabezados están en la fila #10 (ya que arriba poseo otros datos), hice una macro para ingresar datos en esta hoja llenando TEXTBOX, haciendo unas selecciones, etc... Logre que me ordenara debajo de la ultima fila llena todos los datos, es decir, mis datos comienzan a llenarse desde la fila 11, columna "A", con datos hasta la columna "AT", al ingresar el siguiente, lo coloca debajo de este (fila 12), con todos sus datos hasta ala columna "AT" luego en la fila 13 y asi sucesivamente, eso lo hace perfecto, pero ahora quiero que al introducir un nuevo ITEM (con datos desde la columna A hasta la AT me lo organice alfabéticamente (tomando referencia solo la columna A), es decir, si mis ITEM son "GORRAS", "ZAPATOS", "CAMISA", "ARBOL" y cada uno con información hasta la columna "AT", que cada vez que ingrese uno me los organice para que al final se me vea en la Hoja; "ARBOL", "CAMISA", "GORRA" y "ZAPATO". Todo esto es ya que por otro lado tengo un LISTBOX y he leído bastante que para que salga alfabéticamente ordenado en un LISTBOX tiene que venir desde donde se toman los datos, ya que un LISTBOX no se puede ordenar desde si mismo.

Nose si me explico bien, pero trate, en lo que me puedan ayudar estaré mas que agradecido.

ESTA ES LA TABLA DONDE SE VAN INGRESANDO LOS DATOS Y LA USERFORM DONDE LLENOS LOS DATOS QUE DESEO QUE SEAN INTRODUCIDOS (no soy experto pero me fascina la programación :D)

El código es algo largo, mas si necesitan que lo plasme lo hago.

Saludos espero por su Ayuda.

1 Respuesta

Respuesta
2

Luego de las instrucciones de 'pase de datos' a la hoja, agrega esta línea:

Call ORDENAR

Y dentro del mismo Userform o en un módulo copiá esta macro:

Sub ORDENA()
'x Elsamatilde
'se asume que la hoja ya está activada
    Range("A11:AT" & Range("A" & Rows.Count).End(xlUp).Row).Select
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("A11:A" & Range("A" & Rows.Count).End(xlUp).Row) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.ActiveSheet.Sort
        .SetRange Range("A11:AT" & Range("A" & Rows.Count).End(xlUp).Row)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A11").Select
End Sub

Lo que hace es ordenar el rango ocupado según col A. Presta atención a que hace mención a la 'hoja activa' por lo que si tu código tiene seleccionada otra hoja debes activar ésta previamente y luego volver.

Si el tema queda resuelto no olvides valorar la respuesta, sino comenta y/o aclara.

¡Gracias! Excelente Sra. Elsa, me funcionó perfectamente... tuve unos problemitas con la ubicación del "Call" porque me daba un error al realizar unos cálculos que venían luego, pero ya resuelto, MIL GRACIAS!!..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas