Activar hoja y ordenar datos automáticamente


En el post Ordenar datos automáticamente se mostró una macro que ordena los datos en forma automática al terminar de cargar los registros requeridos, en ese caso la macro se ejecuta cuando se agrega el último dato en la columna D y luego de presionar enter ordena la base de datos nuevamente.

En esta entrada se muestra una variante, la misma es que en vez de ordenar los datos inmediatamente luego de cargar el dato en la columna D, esta macro ordena los datos al activar la hoja.

Es algo muy útil cuando se trabaja con listas de nombres, ya sea de personas o artículos, en este ejemplo muestro como se pueden ordenar datos automáticamente al activar la hoja donde se encuentran los datos o registros que se requieren ordenar, esta macro de Excel o procedimiento de VBA ordena los datos alfabéticamente y en forma automática al activar la hoja, el ejemplo aquí presentado tiene una relación estrecha con el publicado anteriormente y denominado ordenar datos e insertar filas mediante macro de VBA, en el cual se insertan filas entre cada  registro de proveedor y se hace una suma totalizada por proveedor, a su vez se ordena por el criterio proveedor; un poco más avanzado es el ejemplo donde se ordena automáticamente pero en base a varios criterios, a su vez se ordena en forma descendente y no ascendente que es la forma por defecto; también se puede usar un userform para ordenar datos que tiene combobox insertados y seleccionar el dato por el cual  ordenar.


Antes de seguir con el desarrollo y en el caso que no tengas conocimiento suficiente sobre el manejo de hojas de Excel, te recomiendo antes de introducirte en el mundo de las macros, que leas un excelente libro sobre Excel el que te ayudará manejar las planillas de cálculo, debes hacer click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.
MASTERCARD PAYONEER


La macro presentada acá, sola detecta cual es la última fila y la última columna y en base a ello arma el rango a ordenar y luego procede al ordenamiento, lo que tu tienes que hacer la primera vez es adaptar el rango por cual tu quieres ordenar los datos, pero esto se hace una sola vez cuando adaptas la macro a tu libro, en el ejemplo el primero nombre que aparece es "A Dayra Col", si ese nombre lo colocamos en cualquier lugar no importa si quedan filas en blanco, activamos otra hoja y luego activamos la hoja1 y veremos como se ordenan los datos y posiciona el nombre "A Dayra Col" en primer lugar.

Desde el link del final se puede descargar el archivo de ejemplo de esta manera podrás ver su funcionamiento en forma más detallada. El código de VBA o Macro de Excel ordena automáticamente un listado al activar la hoja que los contiene, primero se determina cual es la última fila con datos, luego la última columna con datos, separando la letra y número de la columna a través del comando mid; una vez hecho esto ordena los datos armando el rango con los datos obtenidos, para luego ordenarlos

Básicamente esta macro ordena los datos al activar la hoja, solo toma un criterio de ordenación en forma ascendente, pero con un par de cambios se puede ordenar usando varios criterios y también en forma ascendente o descendente. En el link del final podrás descargar el ejemplo y adaptarlo a lo que necesites, en resumen la macro ordena en forma automática y alfabética los datos.


Código que se debe insertar en Worksheet de la hoja donde haremos correr la macro


Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
On Error Resume Next


Dim uf, ucw, r1, r2 As String
Dim x, ucn As Integer


 
Sheets("Hoja1").Select
'determines last row with data

uf = Sheets("Hoja1").Range("D" & Rows.Count).End(xlUp).Row
Sheets("Hoja1").Cells(1, 16384).Select
uc = ActiveCell.End(xlToLeft).Address(False, False)
ucw = Mid(uc, 1, 1)
ucn = ActiveCell.End(xlToLeft).Column

x = 1

'will help determine ranges to sort data
k = Sheets("Hoja1").Cells(2, 1).Address(False, False)
k1 = Mid(k, 1, 1)
r1 = k & ":" & k1 & uf
r2 = "A1:" & ucw & uf
'sorts the data
 ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
 ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range(r1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
 With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SetRange Range(r2)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
 End With



Application.ScreenUpdating = False
End Sub





Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.




If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends